【发布时间】:2014-01-17 17:03:30
【问题描述】:
我正在修改一个基于 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-aware模型的额外字段会被添加两次;django-mptt不喜欢,即使 mixin 是抽象的。 - 最有趣的是,如果
ModelMixin继承自django.db.models.Model,当我尝试向该模型引入外键时,我会遇到这个该死的奇怪错误:
追溯:
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/related.py"
line 900, in set_field_name
self.field_name = self.field_name or self.to._meta.pk.name
AttributeError: 'NoneType' object has no attribute 'name'
【问题讨论】:
标签: python django django-models django-mptt mptt