简单的方案,但无法弄清楚如何查询它:
我们有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
答案 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起都有交易的商店”。根据我的询问,“给我所有从今天开始交易的商店”