【发布时间】:2015-04-17 06:23:51
【问题描述】:
我有一堆继承自 django-polymorphic 的多态模型的 Django 模型。在另一个模型中,我有一个与 ContentType 的 ForeignKey 关系,我想将其限制为从特定基类继承的模型。
例子:
from django.db import models
from polymorphic import PolymorphicModel
from django.contrib.contenttypes.models import ContentType
class MagicBaseModel(PolymorphicModel):
def do_magic(self):
# ...
class MagicObjectA(MagicBaseModel):
def do_magic(self):
super(MagicObjectA, self).do_magic(self)
# ...
class MagicObjectB(MagicBaseModel):
def do_magic(self):
super(MagicObjectB, self).do_magic(self)
# ...
class NonMagicObject(models.Model):
# ...
class MagicAction(models.Model):
magic_object_type = models.ForeignKey(ContentType)
# ...
在上面的示例中,我想限制 MagicAction.magic_object_type 以便只有 MagicObjectA 和 MagicObjectB 可供选择。
我试过像这样使用limit_choices_to:
magic_object_type = models.ForeignKey(ContentType, limit_choices_to=Q(polymorphic_ctype=ContentType.objects.get_for_model(MagicBaseModel)))
但是,您似乎无法在模型初始化期间执行该查询,因为 ContentType 模型尚未准备好。
有什么更好的方法可以解决这个问题吗?
【问题讨论】:
标签: python django django-models django-admin