Django 限制另一个应用程序';s GenericForeignKey选项

Django 限制另一个应用程序';s GenericForeignKey选项,django,django-contenttypes,generic-foreign-key,limit-choices-to,Django,Django Contenttypes,Generic Foreign Key,Limit Choices To,我正在编写一个可重复使用的旋转木马应用程序。它需要引用主项目中的模型,所以我使用了一个通用外键。我在可重用应用程序中有类似的内容: from django.db import models from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic class MyCarousel(models.Model): content_typ

我正在编写一个可重复使用的旋转木马应用程序。它需要引用主项目中的模型,所以我使用了一个通用外键。我在可重用应用程序中有类似的内容:

from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic

class MyCarousel(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_group = generic.GenericForeignKey('content_type', 'object_id')
    ...
现在,我希望该项目能够限制内容类型的类型。如果我在上面的类声明中这样做,我可以重写
content\u type
行,如下所示:

    content_type = models.ForeignKey(ContentType, limit_choices_to=models.Q(app_label = 'myapp', model = 'mymodel'))
但是可重用的应用程序不知道它将与哪个模型一起使用,所以我想在以后的项目中限制选择

这能做到吗?例如,像这样的伪代码:

import my_carousel.models
my_carousel.models.MyCarousel.content_type.limit_choices_to = models.Q(app_label = 'myapp', model = 'mymodel')
实际上,我的目标是让管理员只从特定的模型中进行选择。因此,在那里实现它的解决方案会更好


谢谢

你的意思是“内容类型”字段应该指向其他应用程序中的模型吗?另外,你尝试过吗?还是你只是先发制人地问?第一个问题-我遵循本文描述的方法。如果有更好的办法,请告诉我!第二个问题-不,它不适合我。此外,即使我用一个
限制选项到
参数定义
内容类型
我的carousel.models.MyCarousel.content类型
没有属性
限制选项到
。这个问题有多老,令人惊讶。这个解决方案似乎对OP有效,所以回答你的问题“这可以做到吗”:是的。您需要分享更多的应用程序/型号信息,以及您尝试过的方法,以找出问题所在。您是否按照链接帖子的答案中的建议,尝试循环使用
Contenttype.objects.all()