我有一個使用此 python 函數創建的對象“帖子”列表,我需要按時間戳屬性對該列表進行排序。def following(request): posts=[] follows=Follow.objects.all() for follow in follows: if follow.follower==request.user: posts_user=Post.objects.filter(user=follow.user) for post in posts_user: posts.append(post) return render(request, "network/following.html",{ "posts":posts })如果這是一個 QuerySet,我將使用此函數進行排序:posts = posts.order_by("-timestamp").all()但這是一個列表,所以我不能使用這個函數,它給了我這個錯誤:'list' object has no attribute 'order_by'如何按時間戳對此列表進行排序,以便最新的帖子位于第一個?這是 models.py 中的 Post 類class Post(models.Model): user = models.ForeignKey("User", on_delete=models.CASCADE, related_name="user_post") text=models.TextField(blank=True) timestamp = models.DateTimeField(auto_now_add=True) likes=models.IntegerField(default=0)我的想法是將列表轉換為查詢集,但我不知道該怎么做。謝謝你!
1 回答

PIPIONE
TA貢獻1829條經驗 獲得超9個贊
您可以使用__in
?字段查找來過濾您的帖子,然后對該查詢集進行排序。就像是:
Post.objects.filter(
? ? user__in=Follow.objects.filter(
? ? ? ? follower=request.user
? ? ).values_list('user')
).order_by("-timestamp")
我們首先構建一個查詢集來過濾所有等于當前用戶( )Follow的對象。接下來,我們通過調用來獲取所有這些過濾對象上的所有對象。我們傳遞此查詢集來過濾屬性位于此查詢集中的對象。然后我們只需按時間戳排序即可。followerrequest.userFollow.userFollowvalues_listPostuser
添加回答
舉報
0/150
提交
取消