Django GenericRelation in model Mixin



我有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):
    ...

最新更新