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
- Contabilità
- Magazzino
- PoS
- Project
- MRP
La domanda è stata contrassegnata
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.
Ti stai godendo la conversazione? Non leggere soltanto, partecipa anche tu!
Crea un account oggi per scoprire funzionalità esclusive ed entrare a far parte della nostra fantastica community!
RegistratiPost correlati | Risposte | Visualizzazioni | Attività | |
---|---|---|---|---|
Large columns inside a form
Risolto
|
|
1
dic 16
|
3076 | |
|
4
lug 23
|
2108 | ||
|
1
ott 20
|
5976 | ||
|
0
mar 15
|
6040 | ||
|
1
feb 25
|
10257 |