Django 查询 values_list 获取最后一个值

Django Query values_list getting last value

假设我有一个博客和一个模型中的 class 用户。此外,我有一个与外键相关的 class 评论。

class User(models.Model):
    UserName = models.CharField(max_length=50, blank=True)
    UserCountry = models.CharField(max_length=2, blank=True)

class Comment(models.Model):
    commentText = models.TextField(max_length=1000)
    commentSub = models.ForeignKey(User, related_name='comLink')
    created_at = models.DateTimeField(auto_now_add=True)

现在我想在模型管理中进行 csv 导出,并且我有一个带有 values_list 的查询集。

我想知道是否有可能让每个用户都获得一次,例如只有最后一条评论?

myList = queryset.values_list('UserName', 'UserCountry', 'comLink__commentText')

comLink 是相关名称。现在我只想要最后的评论。时间戳已存在,我还没有弄清楚如何过滤或反转等。

你可以用Subquery来做,我不知道你的模型设计,所以大概是这样:

from django.db.models import OuterRef, Subquery

com = Comment.objects.filter(commentSub=OuterRef('pk')).order_by('-created_at')
myList = queryset.annotate(LastComment=Subquery(com.values('commentText')[:1]))
myList = myList.values_list('UserName', 'UserCountry', 'LastComment')

https://docs.djangoproject.com/en/2.0/ref/models/expressions/#subquery-expressions