I'm trying to create a line in a one to many field every time a checkbox button is clicked.
I added this button to the survey form view (from the Survey module) called nominative
The model is as folows
class survey_survey(models.Model):
_inherit = 'survey.survey'
nominative = fields.Boolean(string="Nominative survey", default=False)
And this is the view
<record id="survey.survey_form2" model="ir.ui.view" >
<field name="name">survey_form2</field>
<field name="model">survey.survey</field>
<field name="inherit_id" ref="survey.survey_form"/>
<field name="arch" type="xml">
<field name="quizz_mode" position="after">
<field name="nominative" />
</field>
</field>
</record>
What I want to happen is that every time the "Nominative" checkbox is selected, a page with some questions gets loaded in the form, and every time the checkbox is unselected, that page gets popped out of the list of pages in the form.
Right now my nearest approach to do this is by creating a new object and append it to the page_id collection
@api.onchange('nominative')
def _toogle_extra_page(self):
cr = self.env.cr
uid = self.env.uid
page_obj = self.pool.get('survey.page')
page = page_obj.create(cr,uid,{
"survey_id": self.id,
"name": "Extra Page",
"title": "Extra Page"
}, context=None)self.page_ids.append(page)
But when I hit the checkbox, the "self.id" value is set to "NULL" in the SQL command
INSERT INTO "survey_page" ("id", "survey_id", "sequence", "title", "create_uid", "write_uid", "create_date", "write_date") VALUES(nextval('survey_page_id_seq'), NULL, 10, 'Pagina de Contacto', 1, 1, (now() at time zone 'UTC'), (now() at time zone 'UTC')) RETURNING id
And also it is not showing in the form view as "Extra Page"
How can I manually insert/remove pages when that specific event occurs?