Ir al contenido
Menú
Se marcó esta pregunta
3 Respuestas
10452 Vistas

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
Descartar
Mejor respuesta

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
Descartar
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!

Mejor respuesta

Try this:

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

Avatar
Descartar
Autor

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

Publicaciones relacionadas Respuestas Vistas Actividad
1
sept 23
3300
0
may 22
3294
4
jun 21
7090
1
jun 17
10878
3
mar 15
8708