gpt4 book ai didi

python - Django - 从 csv 输出的外键关系获取条目

转载 作者:行者123 更新时间:2023-12-01 01:51:00 24 4
gpt4 key购买 nike

我正在将 Django View 中的一些数据导出到 csv,下面是简化的代码示例。我想从游戏模型中获取所有游戏,并为每个游戏获取分数(一对多关系)。我收到错误 tuple object has no attribute Score_set 因此我尝试过的以下代码似乎不是执行此操作的正确方法。我对单独导出游戏对象没有问题。谁能指出我正确的方向吗?

response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="stuff.csv"'

writer = csv.writer(response)

writer.writerow(['Name',
'Details',
'More details'])

games = Game.objects.filter(user=request.user).values_list('name',
'details',
'more_details')


for game in games:
scores = game.score_set.all().values_list('score',
'date_played')
writer.writerow(game)

for score in scores:
writer.writerow(score)

return response

最佳答案

Django 的 Queryset.values_list方法返回元组的查询集。因此,您的循环看起来像 for game in games: 将名称 game 设置为表示查询集每个元素的元组。

如果没有更多信息,即 Game 模型的内容,很难确切地说出如何提取您要查找的数据。从您的代码来看,您的目标似乎是类似于以下内容的输出:

Name | Details | More Details |
some_name | some_detail | some_more_detail
10 | October 25
11 | November 1
9 | November 7
0 | November 28
some_name2 | some_detail2 | some_more_detail2
...

将这些数字想象为一场比赛的得分,所以我会这样希望让您开始。

首先,继续获取 Game 的查询集而不是元组。替换:

games = Game.objects.filter(user=request.user).values_list('name',
'details',
'more_details')

与:

games = Game.objects.filter(user=request.user)

现在在循环中,假设 Score 有一个 ForeignKey,从而在 Game< 中生成名为 score_set 的反向查找字段,使用:

 for game in games:
# I'm just going to construct a single tuple for the game info:
game_attrs = (game.name, game.details, game.more_details)

score_attrs_list = game.score_set.values_list('score', 'date_played') # (No need for .all() here, .values_list() will handle the query)
writer.writerow(game_attrs)
for score_attrs in score_attrs_list:
writer.writerow(score_attrs)

你应该可以开始了。

关于python - Django - 从 csv 输出的外键关系获取条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728574/

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