我有mixin和model:
class Mixin(object):
field = GenericRelation('ModelWithGR')
class MyModel(Mixin, models.Model):
...
但是 django 不会GenericRelation
领域变成GenericRelatedObjectManager
:
>>> m = MyModel()
>>> m.field
<django.contrib.contenttypes.fields.GenericRelation>
当我将字段放入模型本身或抽象模型时 - 它工作正常:
class MyModel(Mixin, models.Model):
field = GenericRelation('ModelWithGR')
>>> m = MyModel()
>>> m.field
<django.contrib.contenttypes.fields.GenericRelatedObjectManager at 0x3bf47d0>
如何在混合中使用GenericRelation
?
您始终可以从Model
继承并使其抽象,而不是从object
继承它。Python的mro会解决所有问题。这样:
class Mixin(models.Model):
field = GenericRelation('ModelWithGR')
class Meta:
abstract = True
class MyModel(Mixin, models.Model):
...