2015-09-12 4 views
1

Я создал модуль, называемый учеником. У меня две формы. 1-я форма состоит только из кнопки для перенаправления на 2-ю форму. Вторая форма состоит из нескольких полей, таких как имя, фамилия, добра, адрес, телефон и электронная почта. Когда я нахожусь в 1-й форме и хочу перенаправить на 2-ю форму, она дает мне ошибку с именем «Ошибка целостности», означает, что она проверяет значение null, поскольку я сделал поля first_name и last_name обязательными во второй форме. Почему он проверяет поля 2-й формы, когда я нахожусь в 1-й форме. Но если я сделаю эти два поля не обязательными, все будет хорошо. поэтому в моем коде перенаправления нет проблем. Я не хочу удалить требуемый атрибут для этих двух полей. Я приложил изображения и мой код также enter image description here enter image description hereформа вид неработающего не работает

Вот мой питон код,

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> 

ответ

1

Поскольку вы определили эти поля как обязательные в декларации модели.

Вам необходимо удалить required=True из декларации модели (из .py файла).

'first_name': fields.char('First Name',size=30,help='first name'),

И поставил ограничение в объявлении панели вместо (файл .xml):

<field name="first_name" required="True"/>

+0

Здесь в этом модуле все работает нормально, если я удаляю требуемый атрибут, но в более крупных модулях, таких как управление продажами, управление учетными записями и финансами, если я удаляю требуемый атрибут в коде python для всех этих полей, я получаю сообщение об ошибке AttributeError: объект «NoneType» не имеет атрибута 'fields_view_get' – Bhanukiran

+0

Можете ли вы выслать мне код, вызывающий ошибку? – William

+0

Привет, код модуля продаж настолько большой – Bhanukiran

0

Если вы однажды закодированы required=True в .py файл, то он будет установить Not NULL = Yes в таблице базы данных.

Я не изменюсь, если вы проверите свойство таблицы даже после удаления файла required=True из .py.

Решение: После удаления required=True просто установите этот модуль из установленных модулей в настройках. Тогда только сделанные вами изменения отразятся в db, и это сработает.