我有一個(gè)使用此 python 函數(shù)創(chuàng)建的對(duì)象“帖子”列表,我需要按時(shí)間戳屬性對(duì)該列表進(jìn)行排序。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 })如果這是一個(gè) QuerySet,我將使用此函數(shù)進(jìn)行排序:posts = posts.order_by("-timestamp").all()但這是一個(gè)列表,所以我不能使用這個(gè)函數(shù),它給了我這個(gè)錯(cuò)誤:'list' object has no attribute 'order_by'如何按時(shí)間戳對(duì)此列表進(jìn)行排序,以便最新的帖子位于第一個(gè)?這是 models.py 中的 Post 類(lèi)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)我的想法是將列表轉(zhuǎn)換為查詢(xún)集,但我不知道該怎么做。謝謝你!
1 回答

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