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