我有一個模型,看起來像這樣:Django的構造函數和混入
class Base(models.Model):
pass
class Mixin1(Base):
active = models.BooleanField(default=False)
class Mixin2(Base):
name = models.CharField(max_length=200,blank=False,null=False)
class Organization(Mixin1, Mixin2, Base):
pass
這工作得很好:
organization = Organization(name='name')
organization.active = True
organization.save()
但這並不:上
organization = Organization(name='name', active=True)
organization.save()
Django的錯誤了構造函數與:
TypeError: 'active' is an invalid keyword argument for this function
a有沒有關於mixin的信息?
更新我所看到的: 使用新鮮的PostgreSQL數據庫和全新的shell。
Python 2.7.3 (default, Sep 5 2012, 20:48:07)
[GCC 4.2.1 Compatible Apple Clang 4.0 ((tags/Apple/clang-421.0.60))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from core.models.organizations import Organization
>>> org1 = Organization(name='name')
>>> org1
<Organization: name>
>>> org1.active = True
>>> org1
<Organization: name>
>>> org1.active
True
>>> org2 = Organization(name='org2',active=True)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "<myprojectpath>/venv/lib/python2.7/site-packages/django/db/models/base.py", line 367, in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % kwargs.keys()[0])
TypeError: 'active' is an invalid keyword argument for this function
>>>
好吧,讓我看看在我編輯的代碼中是否還有別的事情發生。謝謝。 – Erik
你在使用什麼樣的數據庫?我的是PostgreSQL。 – Erik
嘗試同步數據庫並重新啓動外殼實例。如果您在shell啓動後編輯代碼,shell將不會知道這些更改。 –