gpt4 book ai didi

python - django 从查询集上的反向一对多关系添加列

转载 作者:行者123 更新时间:2023-11-30 22:06:11 30 4
gpt4 key购买 nike

嗨,我有一个问题,假设我有这个模型:

class Site():
site_name = charfield

class Sample():
site = foregeinkey
state = decimalfield
sample_date = datefield

我需要组装一个像这样的表格:

| site_name | latest_sample |
| site1 | 150 |

在文档和互联网中搜索 link1 link2我找到了当我需要向查询集中添加一些其他特征时的注释,我的新查询如下:

class ApiGetListOfSites(View):

def get(self, request, format=None):

objList = Site.objects.annotate(
date_sample=Max('sample__sample_date'),
valor_estado=F('sample__state')
)
json = serializers.serialize('json', objList)
return HttpResponse(json, content_type='application/json')

我遇到的问题是,我检索了重复的对象,并且 json 中没有新列。有人帮我提供了一些关于如何做到这一点的建议。

Ps 我认为如果我用原始 SQL 编写查询,我可以与 django 模型的原始属性一起使用。

最佳答案

这是一个典型的使用案例 Django Subqueries :

from django.db.models import OuterRef, Subquery

latest_samples = Sample.objects.filter(site=OuterRef('pk')).order_by('-sample_date')
obj_list = Site.objects.annotate(state=Subquery(latest_samples.values('state')[:1]))

关于python - django 从查询集上的反向一对多关系添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52800466/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com