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
假设我有一个博客和一个模型中的 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