0

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

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 是相关名称。现在我只想要最后一条评论。时间戳是存在的,我还没有弄清楚如何过滤或反转等。

4

1 回答 1

0

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

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

于 2018-02-21T13:25:27.307 回答