Ограничить выбор GenericForeignKey другого приложения
Я пишу приложение Карусель многоразового использования. Он должен ссылаться на модель в основном проекте, поэтому я использовал общий внешний ключ. У меня есть что-то вроде этого в многоразовом приложении:
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')
На самом деле, моя цель - позволить администратору выбирать только из конкретной модели. Так что решение, которое его реализует, будет еще лучше.
Спасибо!