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:
- Müşteri İlişkileri Yönetimi
- e-Commerce
- Muhasebe
- Envanter
- PoS
- Project
- MRP
Bu soru işaretlendi
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.
Enjoying the discussion? Don't just read, join in!
Create an account today to enjoy exclusive features and engage with our awesome community!
Üye Olİlgili Gönderiler | Cevaplar | Görünümler | Aktivite | |
---|---|---|---|---|
Large columns inside a form
Çözüldü
|
|
1
Ara 16
|
3071 | |
|
4
Tem 23
|
2102 | ||
|
1
Eki 20
|
5958 | ||
|
0
Mar 15
|
6034 | ||
|
1
Şub 25
|
10255 |