У меня есть приложение, которое имеет 3 модели: подкасты, эпизоды и категории.
В категориях есть ForeignKey для подкаста:
class Category(models.Model):
...
podcast = models.ForeignKey(Podcast, on_delete=models.CASCADE)
...
Итак, подкаст может иметь несколько связанные категории.
Каждый эпизод может быть связан с категорией подкаста. Я добавил это как ManyToManyField:
class Episode(models.Model):
podcast = models.ForeignKey(Podcast, on_delete=models.CASCADE)
categories = models.ManyToManyField(Category)
...
Проблема заключается в том, что в admin и modelforms поле категорий показывает список каждой категории для каждого подкаста, а не только те, которые связаны с этим подкастом. .
Как я могу использовать limit_choices_to, чтобы ограничивать категории только внешним ключом того же подкаста, с которым связан эпизод? Я пробовал следующее, но, очевидно, не работает, потому что «я» не определено.
categories = models.ManyToManyField(Category, limit_choices_to={'podcast': self.podcast})
Я хотел бы сделать это на уровне модели, если это возможно, поэтому мне не нужно добавлять дополнительные logi c вокруг остальной части приложения.
Спасибо за любую помощь!