gpt4 book ai didi

python - 如何获取值为列表的分隔查询集?

转载 作者:行者123 更新时间:2023-12-01 08:23:38 25 4
gpt4 key购买 nike

我正在使用rest-framework重构django应用程序。我尝试返回带有评论的帖子,并且该应用程序可以使用此功能。

这是我的json设计,我无法更改模型。但我可以改变json设计。

{
"id": 1
"title": "Title",
"content": "Content",
...,
"comments": [
[
{
"id": 1,
"parent": 0,
"content": "Content",
...
},
{
"id": 2,
"parent": 1,
"content": "Content",
...
},
],
[
{
"id": 3,
"parent": 0,
"content": "Content",
...
},
{
"id": 4,
"parent": 3,
"content": "Content",
...
},
],
],
...
}

在评论中,有很多按“组”列分组的列表。在这种情况下,数据看起来像这样。

Comment(id=1, parent=0, content="Content", group=1)
Comment(id=2, parent=1, content="Content", group=1)
Comment(id=3, parent=0, content="Content", group=2)
Comment(id=4, parent=3, content="Content", group=2)

我想获取由 group 列分隔的查询集。我想这样使用。

comments = Comment.objects.filter() # How can I get?
# [[Comment(id=1), Comment(id=2)], [Comment(id=3), Comment(id=4)]]
serializer = CommentSerializer(comments, many=True)

我提到了here我如何将序列化器与列表一起使用。

最佳答案

我不知道如何在数据库查询中完成此操作。但我非常希望以下代码可以解决您的问题。

comments = Comment.objects.order_by('-group') 
# now we have <Comment(id=1), Comment(id=2), Comment(id=3), Comment(id=4)> as query_set

现在我们将按组号分隔列表并合并它们作为响应。就像

response = []
current_group = [] # this will add in repose separated by group number
previous_group = -1 # assign anything that can't be a group number

for comment in comments:
serializer = CommentSerializer(comment)
if serializer.data['group'] == previous_group:
current_group.append(serializer.data)
else:
if previous_group != -1: # our previous assign value
response.append(current_group)
current_group = []
current_group.append(serializer.data)
previous_group = serializer.data['group']
else: # first value
current_group.append(serializer.data)
previous_group = serializer.data['group']

# check current_group list length
if len(current_group) > 0:
response.append(current_group)

现在我们的响应数组将是这样的

[[Comment(id=1), Comment(id=2)], [Comment(id=3), Comment(id=4)]]

然后返回响应数组。

关于python - 如何获取值为列表的分隔查询集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54445930/

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