I have 2 models. main model and a another model for the relationship
class MyModel(models.Model):
_name = 'my.model'
name = field.Char(string='name')
email = field.Char(string = 'email')
country = fields.Many2one(comodel_name = 'country.name', string='country')
class CountryName(models.Model):
_name = 'country.name'
country = fields.Char(string='Country')
these are the my models. i want to add new countries to the country.name model's country field from the frontend form.but frontend form also has the other fields of the my.model (name , email) How do it ? can anyone tell me about how should i write qweb template and the controller file's code snippet for this.
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Contabilidad
- Inventario
- PoS
- Project
- MRP
Se marcó esta pregunta
Hi,
To add new countries to the country.name model, you'll need to handle the form submission through a controller. Here's an example:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<template id="custom_form_template" name="Custom Form">
<t t-call="website.layout">
<div class="container">
<form action="/submit/custom_form" method="post">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" name="name" required="required"/>
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" id="email" name="email" required="required"/>
</div>
<div class="form-group">
<label for="country">Country</label>
<input type="text" class="form-control" id="country" name="country" required="required"/>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</t>
</template>
</odoo>
Python:
from odoo import http
from odoo.http import request
class CustomController(http.Controller):
@http.route('/submit/custom_form', type='http', auth='public', website=True, csrf=True)
def submit_custom_form(self, **post):
# Check if the country already exists
Country = request.env['country.name']
existing_country = Country.sudo().search([('name', '=', post.get('country'))], limit=1)
if not existing_country:
# Create new country if it doesn't exist
existing_country = Country.sudo().create({'name': post.get('country')})
# Create new record in my.model
MyModel = request.env['my.model']
MyModel.sudo().create({
'name': post.get('name'),
'email': post.get('email'),
'country_id': existing_country.id,
})
#Return to a template or render a response if you want
Hope it helps
Thanks Cybrosys. Now It's working Nicely.
¿Le interesa esta conversación? ¡Participe en ella!
Cree una cuenta para poder utilizar funciones exclusivas e interactuar con la comunidad.
RegistrarsePublicaciones relacionadas | Respuestas | Vistas | Actividad | |
---|---|---|---|---|
Large columns inside a form
Resuelto
|
|
1
dic 16
|
3070 | |
|
4
jul 23
|
2102 | ||
|
1
oct 20
|
5957 | ||
|
0
mar 15
|
6033 | ||
|
1
feb 25
|
10253 |