基本的Django查询

时间:2016-06-07 02:16:59

标签: django orm foreign-keys django-queryset

简单的方案,但无法弄清楚如何查询它:

我们有Store模型和Transaction模型。关于Foreign Key的{​​{1}}模型上的Transaction

我想查询以下列表:商店当天已完成至少一次交易。应排除所有其他商店。

Store

当我尝试前一个查询时,我得到了一个很长的列表:

Store.objects.filter(transaction__gt=0, transaction__date_created__gt='2016-06-01')

它几乎就像是为每笔交易列出了商店的实例。我想要的只是每个商店的列表,该列表当天至少完成了一笔交易。

现在,数据库中只有一个商店,所以我应该只收到一个结果。

修改

[<Store: TrialStore>, <Store: TrialStore>, <Store: TrialStore>, ... ] 型号:

Store

class Store(models.Model): status = models.IntegerField(choices=status_choices, default=ACTIVE_STATUS) legal_name = models.TextField(verbose_name='Legal Name') mobile_number = PhoneNumberField(blank=True) email_address = models.EmailField(blank=True) 型号:

Transaction

3 个答案:

答案 0 :(得分:2)

您应该使用distinct()

Store.objects.filter(transaction__gt=0,
                     transaction__date_created__gt='2016-06-01').distinct()

答案 1 :(得分:1)

您可以在查询时将日期时间字段强制转换为date

Store.objects.filter(transaction__date_created__date=Date(2016, 1, 1))

答案 2 :(得分:0)

这是怎么回事?

Store.objects.filter(
    transaction__gt=0, 
    transaction__date_created__year='2016', 
    transaction__date_created__month='06',
    transaction__date_created__day='01'
)

在您的查询中,您说“给我所有自2016.06.01起都有交易的商店”。根据我的询问,“给我所有从今天开始交易的商店”