我正在修改一个基于Django mptt的第三方Django应用程序。我试图将一个巨大的模型重构成基类和一组mixin。一切似乎都很好,然而。。。在
class ModelMixin([see below]):
class Meta:
abstract = True
class BaseModel(ModelMixin, MPTTModel):
class Meta:
abstract = False
ModelMixin
继承自object
,South不会看到mixin中声明的任何字段。在ModelMixin
继承了mptt.models.MPTTModel
,那么django mptt添加到mptt感知模型中的额外字段将被添加两次;django-mptt
不喜欢,尽管mixin是抽象的。在ModelMixin
从django.db.models.Model
继承,那么当我尝试为该模型引入一个外键时,会出现一个非常奇怪的错误:回溯:
^{pr2}$
来自the docs:
这并不能很好地解释您所看到的行为,但是如果您也让mixin从
models.Model
派生,那么它可能会绕过这个bug。i、 电子邮箱:mixin绝对应该从
models.Model
派生;如果字段仅仅是object
的子类,那么这些字段将无法工作,因为它们无法获得ModelBase
元类调用的contribute_to_class
方法。在您在案例3中显示的错误可能是Django bug;如果没有完整的回溯,很难判断。你能加上回溯上下文的其余部分吗?在
相关问题 更多 >
编程相关推荐