ограничить выбор объектов, связанных с выбранным в списке выбора - PullRequest
0 голосов
/ 11 июня 2018

Интересно, знает ли кто-нибудь способ вернуть категории, относящиеся к сеансу, выбранные в опциях выбора.

Пример:

class Session(models.Model):
    name = models.CharField("Sessão", max_length=100)
    slug = models.SlugField("Slug", max_length=100)

class Category(models.Model):
    session = models.ForeignKey(Session, verbose_name='Sessão', on_delete=models.CASCADE, max_length=100, default=1, blank=True, null=True)
    category = models.CharField("Categoria", max_length=100)
    slug = models.SlugField("Slug", max_length=100)

class Article(models.Model):
    category = models.ForeignKey(Category, verbose_name='Categoria', on_delete=models.CASCADE, max_length=100, default=1, blank=True, null=True)
    session = models.ForeignKey(Session, verbose_name='Sessão', on_delete=models.CASCADE, max_length=100, default=1, blank=True, null=True)

При регистрации статьи я бы определилсеанс для статьи, а затем я хотел бы вернуть категории, только категории, связанные с этим сеансом.

Кто-нибудь может мне помочь?Я считаю, что это должно быть динамически ...

Сильное объятие! ​​

1 Ответ

0 голосов
/ 02 июля 2018

1-е решение:

Переопределить шаблон ( Документация Django может помочь вам в этом)

Замена поля, вам нужносделать ajax-вызов API, который принимает session_id и возвращает вам все категории.Заполните возвращенный результат в категории через JS.

Также вы можете попробовать django-ajax-selects

2-е решение: (без JS / AJAX)

Чтобы зарегистрировать статью, вы можете сначала зайти в администратор сеанса, а затем получить ссылку там, чтобы добавить статью.

a.Если вы хотите сделать это changeform_view, тогда вы можете использовать встроенное администрирование и переопределить его форму init () для предварительного заполнения категорий.

b.Если вам нужна ссылка в changelist_view,

http://localhost:8000/admin/<app>/article/add/?session_id=<>

Вы можете переопределить форму администратора статьи init (), прочитать переданный session_id и использовать его соответствующим образом.

...