我有一堆Django模型,它们继承了Django polymorphic的多态模型。在另一个模型中,我有一个与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_对象类型因此只有MagicObjectA和MagicObjectB可供选择。在
我试过像这样使用limit_choices_to
:
但是,在模型初始化期间似乎不能执行该查询,因为ContentType模型还没有准备好。在
有什么更好的办法让我处理这个问题吗?在
我将尝试以下方法,从这里得到启发:Choose queryset for limit_choices_to based on object fields:
您对这两种内容类型的查询还不能在ForeignKey函数中求值,因为数据库还没有准备好。在
因此,您需要改用一个函数,它将在需要时为您获取两个选项。在
然后,在该函数中,您可以过滤内容类型实例的“model”字段。在
是这样的:
您可以在字段声明中引用此函数,如下所示:
^{pr2}$相关问题 更多 >
编程相关推荐