コンテンツへスキップ
メニュー
この質問にフラグが付けられました
1 返信
1755 ビュー

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.


アバター
破棄
最善の回答

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.

関連投稿 返信 ビュー 活動
1
12月 16
3073
4
7月 23
2105
1
10月 20
5964
0
3月 15
6036
1
2月 25
10255