Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
3 Replies
3629 Tampilan

I want to add expense module lines in website form.

Avatar
Buang
Jawaban Terbai

Create a website template to display the form:

odoo
data
template id="my_model_website_template" name="My Model Website Template" inherit_id="website.layout"
xpath expr="//main" position="inside"
div class="container"
form id="my_model_form" class="s_website_form" method="post" action="/my_model/submit"
t t-call="my_model_website_form_view" /
button type="submit">Submit /form
/div
/xpath
/template
/data


Create a controller to handle the form submission:
from odoo import http
from odoo.http import request

class MyModelController(http.Controller):

@http.route('/my_model/submit', type='http', auth="public", website=True, methods=['POST'])
def submit_form(self, **post):
model = request.env['my.model']
values = {
'name': post.get('name'),
'lines': [(0, 0, {'name': line}) for line in post.getlist('lines')],
}
model.create(values)
return request.redirect('/')

Include the website template in the website layout:
odoo>
template id="website_layout" inherit_id="website.layout"
xpath expr="//main" position="inside"
t t-call="my_model_website_template" /
/xpath
/template
/odoo




Avatar
Buang
Jawaban Terbai

One way to do this is by creating a table in the website then calling a custom method defined in your model via rpc query. In the custom function, you should search for the one2many lines and return it. Then back in Js side you iterate the result returned by the query and fill up the table.

Avatar
Buang
Jawaban Terbai

Hi,

You need to create a controller and pass the values to the rendered template. 
In the template, you can loop it using for-each.

Eg: 

<t t-foreach="//passed value" t-as="value">
       <t t-esc="value"/> 
</t>


Regards

Avatar
Buang
Post Terkait Replies Tampilan Aktivitas
0
Sep 22
162
4
Mar 24
5137
1
Mar 24
1691
1
Sep 22
3809
2
Jul 22
2368