提问人:Sandy 提问时间:7/6/2023 最后编辑:Sandy 更新时间:7/6/2023 访问量:25
Django - 在 .values() 方法中获取模型对象
Django - get model object in .values() method
问:
我有这张表:
卖家名称 | 销售日期 |
---|---|
爱丽丝 | 2023/05/01 |
鲍勃 | 2023/05/03 |
爱丽丝 | 2023/05/15 |
爱丽丝 | 2023/05/31 |
卡尔 | 2023/05/01 |
卡尔 | 2023/05/04 |
鲍勃 | 2023/05/20 |
卡尔 | 2023/05/21 |
我正在使用这个 Django 查询集来获取每个卖家的第一个和最后一个销售日期:
sales = (Sale.objects.filter(created_at__year=2023, created_at__month=5)
.values('seller')
.annotate(min_date=Min('created_at'), max_date=Max('created_at'))
.order_by()
)
查询工作正常,但它返回的是卖家而不是对象:id
<Seller>
{'seller': 1, 'min_date': datetime.datetime(2023, 5, 1, 3, 52, 12, tzinfo=<UTC>), 'max_date': datetime.datetime(2023, 5, 31, 7, 32, 1, tzinfo=<UTC>)}
{'seller': 2, 'min_date': datetime.datetime(2023, 5, 3, 4, 34, 11, tzinfo=<UTC>), 'max_date': datetime.datetime(2023, 5, 20, 5, 52, 1, tzinfo=<UTC>)}
{'seller': 3, 'min_date': datetime.datetime(2023, 5, 1, 11, 50, 5, tzinfo=<UTC>), 'max_date': datetime.datetime(2023, 5, 21, 10, 21, 1, tzinfo=<UTC>)}
如何在queryset中获取模型对象?Seller
更新:这是我文件的相关代码models.py
class Seller(models.Model):
name = models.CharField(max_length=100, blank=True, default='')
class Sale(models.Model):
seller = models.ForeignKey(Seller, on_delete=models.CASCADE, null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
答:
0赞
Zilay
7/6/2023
#1
您可以使用来获取相关的 Seller 对象。下面是查询的更新版本select_related
sales = (Sale.objects.filter(created_at__year=2023, created_at__month=5)
.select_related('seller')
.values('seller')
.annotate(min_date=Min('created_at'), max_date=Max('created_at'))
.order_by()
)
评论
0赞
Sandy
7/6/2023
嗨,尝试了您的查询,但它一直只显示卖家 ID。我已经用我的代码更新了我的问题。models.py
上一个:如何嵌套聚合匹配术语?
下一个:CICD 微服务架构
评论