"Log_In() takes exactly 3 arguments (2 given)" 在 Odoo 10.0 中

"Log_In() takes exactly 3 arguments (2 given)" in Odoo 10.0

我想通过 odoo 10.0 创建一个 "Signup/Login Form"。

我的代码 python :

class SinhVien(models.Model):   
     _name = "studentmanagement.sinhvien"

     Ten = fields.Char()
     GioiTinh = fields.Char()
     NgaySinh = fields.Char()
     LienLac = fields.Char()
     MatKhau = fields.Char()
     DiaChi = fields.Char()
     DangKyHocPhan = fields.Many2many('studentmanagement.khoahoc', 'Dang_Ky_Hoc_Phan', 'studentmanagement.sinhvien_id', 'studentmanagement.khoahoc_id', string ="dang ky hoc phan")
     _sql_constraints = [ ('LienLac', 'unique(LienLac)', 'Two student with the same user!') ]

     def Log_In(self, Account, Password):
         if Account is not None & Password is not None:
            test_prod_ids = self.search([('LienLac','=',Account),   ('MatKhau','=',Password)], limit=1, context=None)
            return {
              'name': ('My Profile'),
              'view_type': 'form',
              'view_mode': 'form',
              'res_model': 'studentmanagement.sinhvien',
              'view_id': False,
              'type': 'ir.actions.act_window',
            }
        else :
            return None
 class KhoaHoc(models.Model):
       _name = "studentmanagement.khoahoc"

       MonHoc = fields.Char()
       TinChi = fields.Integer()
       PhongHoc = fields.Char()
       GiaoVien = fields.Char()

LogIn_SignUp.xml :

    <record model="ir.ui.view" id="LogIn_form_view">
        <field name="name">Logging</field>
        <field name="model">studentmanagement.sinhvien</field>
        <field name="type">form</field>
        <field name="arch" type="xml">
            <form string="Logging">
                <group>
                    <field name="LienLac"/>
                    <field name="MatKhau"/>
                    <button string="Log In" type="object" name="Log_In"/>
                </group>
            </form>
        </field>
    </record>

    <record model="ir.actions.act_window" id="LogIn_form_action">
        <field name="name">Log In</field>
        <field name="res_model">studentmanagement.sinhvien</field>
        <field name="view_type">form</field>
        <field name='view_id' ref='LogIn_form_view'/>
    </record>

    <menuitem id="main_menu_entrance" name="entrance"/>
    <menuitem id="Log In" name="Log In" parent="main_menu_entrance" action="LogIn_form_action"/>

表格: 这是错误:

我找了很多,都没有相同的情况。我不明白这样的错误,以及如何解决它。

很难确定,但根据堆栈跟踪,您可能需要 Log_In 只接受一个 **kwargs:

def Log_In(self, **kwargs):
    Account = kwargs.get('Account')
    Password = kwargs.get('Password')
    if Account is not None & Password is not None:
    ...

或者可能只是:

def Log_In(self, args):
    Account = args.get('Account')
    Password = args.get('Password')
    if Account is not None & Password is not None:
    ...

我已经更正了我的代码,它对我有用:

def Log_In(self, args):
    Account = args.get('LienLac')
    Password = args.get('MatKhau')
    if Account is not None and Password is not None:
         test_prod_ids = self.search([('LienLac','=',Account),('MatKhau','=',Password)], limit=1, context=None)
         if test_prod_ids:
            return {
               'name': ('My Profile'),
               'view_type': 'form',
               'view_mode': 'form',
               'res_model': 'studentmanagement.sinhvien',
               'view_id': False,
               'type': 'ir.actions.act_window',
             }
       else:
          return None
    else :
         return None