限制另一个应用程序的GenericForeignKey选项

时间:2013-06-13 04:48:10

标签: django django-contenttypes generic-foreign-key limit-choices-to

我正在写一个可重复使用的Carousel应用程序。它需要引用主项目中的模型,所以我使用了通用外键。我在可重用的应用程序中有这样的东西:

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')

实际上,我的目标是让管理员只选择特定的模型。因此,实现它的解决方案会更好。

谢谢!

0 个答案:

没有答案