Ограничить выбор 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')

На самом деле, моя цель - позволить администратору выбирать только из конкретной модели. Так что решение, которое его реализует, будет еще лучше.

Спасибо!

0 ответов

Другие вопросы по тегам