如何将Django的GenericForeignKey限制为模型列表?

| 有没有办法告诉Django,具有内容类型GenericForeignKey的模型只能指向预定义列表中的模型?例如,我有4个模型:A,B,C,D和一个拥有GenericForeignKey的模型X。我可以告诉X GenericForeignKey只允许A和B吗?     
已邀请:
        例如, 您的应用是app和app2,并且app中有A,B模型,app2中有C,D模型。 您只想查看app.A和app.B和app2.C
from django.db import models

class TaggedItem(models.Model):
    tag = models.SlugField()
    limit = models.Q(app_label = \'app\', model = \'a\') | models.Q(app_label = \'app\', model = \'b\') | models.Q(app_label = \'app2\', model = \'c\')
    content_type = models.ForeignKey(ContentType, limit_choices_to = limit)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey(\'content_type\', \'object_id\')
在ForeignKey上使用limit_choices_to。 检查Django文档以获取详细信息和Q对象app_label。 您需要编写适当的app_label和模型。这只是代码片段 加:我认为您写错了app_label。这可以为您提供帮助。
from django.contrib.contenttypes.models import ContentType
for c in ContentType.objects.all():
    print(c.app_label, c.model)
    

要回复问题请先登录注册