gpt4 book ai didi

python - django注释和过滤

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

希望这个结果集具有足够的解释性:

title             text            total_score    already_voted
------------- ------------ ----------- -------------
BP Oil spi... Recently i... 5 0
J-Lo back ... Celebrity ... 7 1
Don't Stop... If there w... 9 0
Australian... The electi... 2 1

我的模型文件描述了文章(作者、文本、标题)和投票(施法者、日期、分数)。我可以通过以下方式获得前三列:

articles = Article.objects.all().annotate(total_score=Sum('vote__score'))

但是计算第四列(这是一个 bool 值,描述当前登录用户是否在第 3 列中投了任何选票)目前有点超出我的能力!希望有一些不需要原始 sql 的东西。

干杯,戴夫

--Fedang #django 上的 Trindaz

最佳答案

我想不出包含 bool 条件的方法。也许其他人可以更好地回答这个问题。

换个角度思考怎么样?如果您不介意执行两个查询,您可以根据当前登录的用户是否已投票来过滤您的文章。像这样的事情:

all_articles  = Article.objects.all()

articles_user_has_voted_on = all_articles.filter(vote__caster =
request.user).annotate(total_score=Sum('vote__score'))

other_articles = all_articles.exclude(vote__caster =
request.user).annotate(total_score=Sum('vote__score'))

更新

经过一些实验,我能够弄清楚如何为同一模型中的列添加 bool 条件(在本例中为Article),但不能为列添加 bool 条件在另一个表中(Vote.caster)。

如果 Article 有一个caster 列:

Article.objects.all().extra(select = {'already_voted': "caster_id = %s" % request.user.id})

在目前的状态下,这可以应用于Vote模型:

Vote.objects.all().extra(select = {'already_voted': "caster_id = %s" % request.user.id})

关于python - django注释和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3590416/

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