Python Django查询集具有特定外键的最新对象

Python Django查询集具有特定外键的最新对象,python,django,django-models,Python,Django,Django Models,我有一个侧面模型 class Profile(models.model): user=models.Foreignkey(user,null=True,blank=True) 及 对于一封电子邮件,可能会有很多类似的情绪 test@test.com happy test@test.com sad 我希望获得一个查询集,以便电子邮件属于在配置文件模型中具有外键的用户,并且该情绪是为该用户创建的最新情绪如果您的db后端是postgresql,则可以使用: @e4c5提到的关于主键不是记录

我有一个侧面模型

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

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

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

我希望获得一个查询集,以便电子邮件属于在配置文件模型中具有外键的用户,并且该情绪是为该用户创建的最新情绪

如果您的db后端是postgresql,则可以使用:

@e4c5提到的关于主键不是记录创建顺序的最终指示符的限制仍然适用。还要注意的是,
电子邮件
auth.User
中不是唯一的,因此,如果用户共享同一封电子邮件,则只有他们中任何人的最新情绪才会出现在查询集中

test@test.com happy
test@test.com sad
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