【发布时间】:2020-02-07 20:43:41
【问题描述】:
我的应用有 3 个模型:Podcasts、Episode 和 Categories。
类别有一个播客的外键:
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)
...
问题在于,在管理和模型表单中,类别字段显示每个播客的每个类别的列表,而不仅仅是与此播客相关联的类别。
如何使用 limit_choices_to 仅限制具有与该剧集相关的同一播客的外键的类别?我尝试了以下方法,但显然不起作用,因为未定义“自我”。
categories = models.ManyToManyField(Category, limit_choices_to={'podcast': self.podcast})
如果可能,我想在模型级别执行此操作,因此我不必在应用程序的其余部分添加额外的逻辑。
感谢您的帮助!
【问题讨论】:
标签: django django-models django-forms