Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
9 ตอบกลับ
36979 มุมมอง

Hi all,


I have a Qweb PDF report where I am fetching some custom records.  One of the fields I want to display is a SELECTION field such as for example x_approval_status with Selection definition of : [('A','Approved'),('D','Denied')].

In the Qweb query I am fetching these records and showing the field, like <t t-raw="object.x_approval_status" />.  This works, it shows the 'A' or 'D' values.

How can I show the 'Approved' or 'Denied' values ?

tx

Seppe

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

Try this:

<t t-esc="dict(object.fields_get(allfields=['x_approval_status'])['x_approval_status']['selection'])[object.x_approval_status]"/>


อวตาร
ละทิ้ง

Awesome, your way is better than mine at
https://www.odoo.com/es_ES/forum/help-1/question/how-to-define-a-custom-methods-functions-to-be-used-in-a-qweb-report-how-to-define-and-use-a-report-parser-92244
I upvote your answer. It's a more clean way

ผู้เขียน

Hi Zbik, do you also know how the syntax is if this were an email template ? Thanks !

คำตอบที่ดีที่สุด


zbik 's answer is awesome. But error will be raised if Selection field has False value.

Otherwise use this. 

<t t-set="values" t-value="dict([('A','Approved'),('D','Denied'), (False,False)])"/> 
<t t-esc="values[object.x_approval_status]"/>

Or

<t t-esc="{False: False, 'A': 'Approved', 'D': 'Denied'}[object.x_approval_status]"/>





อวตาร
ละทิ้ง

Works great thanks, and easy to understand!

คำตอบที่ดีที่สุด

if you want to get rid of False error

It should also work

<t t-if = "object. x_approval_status">
<t t-esc = "dict (object.fields_get (allfields = ['x_approval_status']) ['x_approval_status'] ['selection']) [object.x_approval_status]" />

</t>


Another solution:
use <t t-field="o.your_field"/>

อวตาร
ละทิ้ง
ผู้เขียน คำตอบที่ดีที่สุด

Worked wonderfully well, big thanks for quick reply !!

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

Just wanted to chime in and say that zbik's answer also works in email templates. This is an example that can be used in contracts reminder:

${dict(object.fields_get(allfields=['recurring_rule_type'])['recurring_rule_type']['selection'])[object.recurring_rule_type]}

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

Thanks, Zbik, I used your suggestion in my case for each order line to html orders report as a list, and it's working in v.11:

<t t-esc="dict(doc.order_id.fields_get(allfields=['my_field_in_SO'])['my_field_in_SO']['selection'])[doc.order_id.my_field_in_SO]"/>
อวตาร
ละทิ้ง