【问题标题】:Django query set latest object having a particular foreign keyDjango查询设置具有特定外键的最新对象
【发布时间】:2017-06-03 22:51:29
【问题描述】:

我有一个个人资料模型

class Profile(models.model):
    user=models.Foreignkey(user,null=True,blank=True)

class Moods(models.model):
    email=models.CharField(null=True,blank=True)
    mood=models.CharField(null=True,blank=True)

对于一封电子邮件,可能会有很多情绪……

test@test.com happy
test@test.com sad

我想获取一个查询集,以便电子邮件属于在 Profile 模型中具有外键的用户,并且心情是为该用户创建的最新心情

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    如果你的db后端是postgresql,你可以使用distinct(*fields):

    Moods.objects\
        .filter(email__in=User.objects.filter(profile_set__isnull=False).values_list('email', flat=True))\
        .order_by('email', '-pk')\  # group by email, latest first
        .distinct('email')  # pick first for each email
    

    @e4c5 提到的关于主键不是记录创建顺序的明确指标的限制仍然适用。另请注意,emailauth.User 中并不是唯一的,因此如果用户共享相同的电子邮件,则查询集中只有他们中的任何一个的最新心情。

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 2021-09-11
      • 1970-01-01
      • 2021-11-04
      • 2019-02-02
      • 2013-02-27
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多