簡體   English   中英

獲取所有對象的最新相關對象

[英]Get most recent related objects for all objects

假設我有以下 model:

from django import models

class Post(models.Model):
    user = models.ForeignKey(to=User, on_delete=CASCADE)
    created = models.DatetimeField(auto_now_add=True)

我想從一組用戶那里獲取一些關於最近發布的信息(例如喜歡)

posts = User.objects.filter(**params).annotate(most_recent_post=Max('post__created')).annotate(likes=Count('post__likes', filter=Q(post__created=F('most_recent_post'))

當我嘗試進行此查詢時,出現以下錯誤: OperationalError: misuse of aggregation function MAX()

class Post(models.Model):
    user = models.ForeignKey(User, on_delete=CASCADE)
    created = models.DatetimeField(auto_now_add=True)
    class Meta:
        ordering = ['-created'] # ordering Post by created date DESC 
def recent(request):
    user = request.user
    recent_post = user.post_set.all().first() # get the recent post
    counter = user.post_set.all().count() # count all posts by this user

試試這個來獲取最近的帖子:

posts = Post.objects.order_by('-id').all()

計數用途:

posts = Post.objects.order_by('-id').all().count()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM