Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本Django查询_Django_Orm_Foreign Keys_Django Queryset - Fatal编程技术网

基本Django查询

基本Django查询,django,orm,foreign-keys,django-queryset,Django,Orm,Foreign Keys,Django Queryset,简单场景,但不知道如何查询: 我们有一个商店模型和交易模型外键在事务模型上与存储相关 我想查询一个列表:仅限当天至少完成一笔交易的门店。应排除所有其他商店 Store.objects.filter(事务\uuu gt=0,事务\uu gt=2016-06-01创建日期) 当我尝试前一个查询时,我得到了一个很长的列表: [<Store: TrialStore>, <Store: TrialStore>, <Store: TrialStore>, ... ]

简单场景,但不知道如何查询:

我们有一个
商店
模型和
交易
模型<代码>外键在
事务
模型上与
存储
相关

我想查询一个列表:仅限当天至少完成一笔交易的门店。应排除所有其他商店


Store.objects.filter(事务\uuu gt=0,事务\uu gt=2016-06-01创建日期)

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

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

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)
class Transaction(models.Model):
  store = models.ForeignKey(Store)
  date_created = models.DateTimeField(auto_now_add=True, verbose_name='Created')
  status = models.IntegerField(choices=status_choices)
这个怎么样

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

在您的查询中,您说的是“给我所有自2016.06.01以来有交易的门店”。通过我的查询,“给我所有当天有交易的门店”

您可以在查询时将datetime字段转换为:

Store.objects.filter(transaction__date_created__date=Date(2016, 1, 1))
你应使用:


你能展示一下你的模型吗?即使我真的在查询“自2016.06.01以来”,我不应该只得到一个结果吗?从那时起,只有一家商店一直在进行交易。不是三个。
Store.objects.filter(transaction__gt=0,
                     transaction__date_created__gt='2016-06-01').distinct()