Django根据反向关系中的特定项进行过滤

时间:2016-10-13 08:11:47

标签: python django

我有两个看起来像这样的模型:

Course(models.Model):
  pass

WeeklyPrice(models.Model):
  num_weeks = models.IntegerField()
  price = models.DecimalField()
  course = models.ForeignKey(Course)
  is_erased = models.BooleanField()

问题是我有一个搜索表单,需要能够按最少的周数过滤。

在创建课程时,还会创建一堆WeeklyPrices,然后可以将其删除(逻辑上将is_erased设置为True),因此一个很好的例子就是课程有13个WeeklyPrice实例,从周开始4,因为第1,2和3周已被删除。

那么如何检索Courses的查询集,其WeeklyPrice实例的num_weeks小于或等于从搜索表单中检索到的duration变量?< / p>

1 个答案:

答案 0 :(得分:1)

好的,所以我最终发现它比听起来简单得多......

所需的过滤器是:

courses.filter(weekly_prices__is_erased=False, weekly_prices__num_weeks=duration)