我创建了一个名为student的模块。我有两个表单视图。第一个表单只包含一个重定向到第二个表单的按钮。第二种形式包括少数字段,如名字,姓氏,dob,地址,电话和电子邮件。当我处于第一种形式并且想要重定向到第二种形式时,它给我一个名为“完整性错误”的错误意味着它正在检查非空约束,因为我已将first_name和last_name字段设置为第二种形式的必需字段。当我处于第一种形式时,为什么要检查第二个表单字段。但如果我将这两个字段视为非强制性,一切正常。所以我的重定向代码没有问题。我不想删除这两个字段上的必需属性。我已经附加了图片和我的代码
这是我的python代码,
class student(osv.osv):
_name = 'student'
_columns = {
'first_name': fields.char('First Name',size=30,required=True, help='first name'),
'name': fields.char('Last Name',size=30,required=True, help='last name'),
'birth_date': fields.date('Birth Date',size=30, help='DOB'),
'address': fields.text('Address',size=100, help='your Address'),
'email': fields.char('Email',size=50, help='the email'),
'phone': fields.char('Phone',size=30, help='the phone'),
}
@api.multi
def redirection(self):
view_id = self.env.ref('student.view_student_form').id
context = self._context.copy()
return {
'name':'student.form',
'view_type':'form',
'view_mode':'form',
'views' : [(view_id,'form')],
'res_model':'student',
'view_id':view_id,
'type':'ir.actions.act_window',
'res_id':self.id,
'target':'current',
'context':context,
}
@api.multi
def redirection2(self):
view_id = self.env.ref('student.view_student2_form').id
context = self._context.copy()
return {
'name':'student2.form',
'view_type':'form',
'view_mode':'form',
'views' : [(view_id,'form')],
'res_model':'student',
'view_id':view_id,
'type':'ir.actions.act_window',
'res_id':self.id,
'target':'current',
'context':context,
}
Xml代码打开数据标签,openerp没有出现在这里所以不用担心,它在我的代码中
student.form
学生
形成
<record model="ir.ui.view" id="view_student2_form">
<field name="name">student2.form</field>
<field name="model">student</field>
<field name="priority" eval="15"/>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="student">
<group>
<field name="first_name" style="width: 40%"/>
<field name="name" style="width: 40%"/>
<button type="object" string="Form1" name="redirection"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_student_tree">
<field name="name">student.tree</field>
<field name="model">student</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="student">
<field name="first_name"/>
<field name="name"/>
<field name="birth_date"/>
<field name="address"/>
<field name="email"/>
<field name="phone"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_student">
<field name="name">Student</field>
<field name="res_model">student</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.actions.act_window" id="action_student2">
<field name="name">Student.action2</field>
<field name="res_model">student</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_student_form"/>
</record>
<menuitem name="Student/Student" id="menu_student" action="action_student"/>
<menuitem name="Student" id="menu_student_student_item" parent="menu_student" action="action_student"/>
</data>
</openerp>
答案 0 :(得分:0)
如果您曾在.py文件中编码required=True
,那么它会在数据库表中设置Not NULL = Yes
。
即使从.py文件中删除required=True
后,如果检查表属性,我也不会改变。
解决方案:在设置中删除required=True
刚刚从已安装模块升级该特定模块后。然后,只有他们所做的更改才会反映在数据库中并且可以正常工作。