Skip to Content
Menu
This question has been flagged
3 Replies
9164 Views

I have a field that is defined as:-

request_text = fields.Html('Incident Description', required=True)

and in the xml:-

<field name="request_text" widget="html" />​

But somehow the field is not mandatory in the form.

How do I make sure that the field is made mandatory and it is highlighted as mandatory in the form and the form shows validation error when it is submitted without filling this field?

Update:-

I've tried the following changes in the XML file unsuccessfully :-

<field name="request_text" widget="html" required="1"/>
<field name="request_text" widget="html">
<attribute name="required">True</attribute>
</field>

This is really strange given that the field definition is set to "required=true". Is this a bug?

Avatar
Discard
Best Answer

Just quick check the code (didn't dig deeper) and it seems HTML field has fallback value  `<p><br/></p>` while fields have no value for avoiding the crash of Wysiwyg editor.
that's why it didn't raise the required warning on save of record because it has a fallback value.

an alternate is overriding create method (python) and check the value and if it's `<p><br/></p>` raise the error.
another option extends HTML field override the _setValue for the same reason :)

ref: https://github.com/odoo/odoo/blob/13.0/addons/web_editor/static/src/js/backend/field_html.js#L372

Avatar
Discard
Author

Ravi, thanks for the quick check. That was helpful insight.

I tried as you suggested, to overriding the create method like so:-

@api.model

def create(self, vals):

if vals.get('request_text') == "<p><br/></p>":

raise exceptions.Warning("Incident Description cannot be empty")

But unfortunately, didn't seem to have any effect whatsoever. Not sure if I messed up in following your suggestion or if there's something more here. Kindly let me know if you're able to find out more. Thanks.

there is no backslash after br tag

so it should be like

if vals.get('request_text') == "<p><br></p>":

Author

Thanks Ravi, this worked!

Best Answer

Try this:

<field name="request_text" widget="html" required="1"/>​

Avatar
Discard
Author

I have tried this, didn't work. Please check update for more things that I've tried.

Related Posts Replies Views Activity
1
Sep 23
2226
0
May 22
2367
4
Jun 21
6092
1
Jun 17
9453
3
Mar 15
7731