콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
3 답글
3683 화면

I want to add expense module lines in website form.

아바타
취소
베스트 답변

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




아바타
취소
베스트 답변

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.

아바타
취소
베스트 답변

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

아바타
취소
관련 게시물 답글 화면 활동
0
9월 22
162
4
3월 24
5230
1
3월 24
1765
1
9월 22
3871
2
7월 22
2435