簡體   English   中英

如何執行與值列表匹配的 Django 查詢過濾器?

[英]How do I do a Django query filter that matches against a list of values?

嘿伙計們,我正在做一個小型社交媒體應用程序,現在我無法弄清楚如何顯示某人正在關注的用戶的帖子。 現在,我創建了一個列表,將所有用戶名作為值添加到其中。 如何過濾掉 Django 查詢結果,它打印出列表中包含的所有結果?

我可以在它只打印出其中一個關注者帖子的情況下做到這一點,因為我可以輕松地比較一個值。 但是,當我需要與值列表進行比較時,我該怎么做呢? 有任何想法嗎? 多謝你們。

下面是我的代碼:

def follows(request, username):
# create list
list = []
# get the username of the signed in user
userSearch = User.objects.get(username = username)
# get the user ID of the signed in user
userID = userSearch.id
# get the user IDs of the followers of the signed in user
query = Follow.objects.filter(follower_id = userID)
#get the usernames of the followers of the signed in user
query2 = User.objects.filter(id = query[0].following_id)
#add the usernames to a list
for i in query:
    list.append(i.username)

query3 = NewPost.objects.filter(username = query2[0].username)
paginator = Paginator(query3, 10)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
return render(request, "network/follows.html", { "page_obj": page_obj })

模型.py:

from django.contrib.auth.models import AbstractUser
from django.contrib.postgres.fields import ArrayField
from django.db import models

class User(AbstractUser):
    pass
    
class Follow(models.Model):
    follower_id = models.IntegerField(default=0)
    following_id = models.IntegerField(default=0)

class NewPost(models.Model):
    userID = models.IntegerField(default=0)
    username = models.CharField(max_length=64, default="")
    body = models.CharField(max_length=64)
    likes = models.IntegerField(default=0)
    timestamp = models.DateTimeField(auto_now_add=True)

我用這段代碼來做我需要的。

query3 = NewPost.objects.filter(userID__in = list)

暫無
暫無

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

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