Django的distinct()不返回不同的值 [英] Django distinct() not returning distinct values

查看:88
本文介绍了Django的distinct()不返回不同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像这样的 Session 模型:

I have a Session model like this:

class Session(models.Model):  
    user = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE, related_name="sessions")
    flavor = models.ForeignKey(Flavor, null=True, blank=True, on_delete=models.CASCADE, related_name="sessions")
    ....

我正在尝试运行查询:

sessions = Session.objects.all().values('flavor__pk', 'user__pk').distinct()

但是当我随后打印会话对象,我得到以下信息:

But when I then print the sessions object I get this:

<QuerySet [{'user__pk': 14544, 'flavor__pk': 1}, {'user__pk': 14544, 'flavor__pk': 1}, {'user__pk': None, 'flavor__pk': 30}, {'user__pk': 193, 'flavor__pk': 30}, '...(remaining elements truncated)...']>

其中,如果仔细观察,前两个条目完全相同 {'user__pk':14544,'flavor__pk':1}

Which, if you look closely, the first two entries are exactly the same {'user__pk': 14544, 'flavor__pk': 1}! Isn't this supposed to be distinct?

推荐答案

我认为这段代码有效:

Session.objects.all().values_list('flavor__pk', 'user__pk').distinct()

这篇关于Django的distinct()不返回不同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆