我正在编写一个可重复使用的轮播应用程序。它需要引用主项目中的模型,所以我使用了通用外键。我在可重用的应用程序中有这样的东西:
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_type 的类型。如果我在上面的类声明中这样做,我可以重写该content_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')
实际上,我的目标是让管理员仅从特定模型中进行选择。因此,在那里实施它的解决方案会更好。
谢谢!