Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
3 Odpovědi
10454 Zobrazení

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
Zrušit
Nejlepší odpověď

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
Zrušit
Autor

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>":

Autor

Thanks Ravi, this worked!

Nejlepší odpověď

Try this:

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

Avatar
Zrušit
Autor

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

Related Posts Odpovědi Zobrazení Aktivita
1
zář 23
3300
0
kvě 22
3294
4
čvn 21
7091
1
čvn 17
10882
3
bře 15
8708