【问题标题】:django many to many filter fieldsdjango多对多过滤字段
【发布时间】:2014-05-14 14:32:12
【问题描述】:

我有这个:

class A(models.Model):
    name = models.CharField()
    tags = models.ManyToManyField(Tags, through='Tags')

class Tags(models.Model)
    a = models.ForeignKey(A)
    tag = models.ForeignKey(Tag)
    assign_date = models.DateTimeField()

class Rates(models.Model):
    a = models.ForeignKey(A)
    rate = models.PositiveSmallIntegerField()

我需要让所有 Rates 都大于 2,然后按给定日期之后分配的标签进行过滤。 日期过滤器很简单,但我不知道如何使用 django orm 进行此查询

我需要这样的东西:

rates = rates.objects.filter(rate_gte=2, a__tags__assign_date__gte=date_object)

另一方面,sql查询非常简单:

select * from rates
inner join tags on tags.a_id = rates.a_id
where tags.assign_date > now() - '2 weeks' and rates.rate > 2

【问题讨论】:

    标签: python django django-models django-orm


    【解决方案1】:

    你所拥有的几乎是正确的。您希望“rate__gte”注意第二个下划线。

    这里有一个使用示例:https://docs.djangoproject.com/en/dev/topics/db/queries/#filtered-querysets-are-unique

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 2015-07-18
      • 2020-03-20
      • 2016-12-13
      • 2013-01-22
      • 2014-05-25
      • 2018-05-25
      • 2021-07-10
      • 2013-08-06
      相关资源
      最近更新 更多