python - 如何执行与值列表匹配的 Django 查询过滤器?
问题描述
嘿伙计们,我正在做一个小型社交媒体应用程序,现在我无法弄清楚如何显示某人正在关注的用户的帖子。现在,我创建了一个列表,将所有用户名作为值添加到其中。如何过滤掉 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)
推荐阅读
- python - 如何使用项目的 .pyc (pycache) 文件构建 docker
- jquery - 如何从序列化的输入字段中获取标签文本?
- c++ - 是否可以制作 constexpr 树?
- php - 在数据库中建立连接时出错。在 Wampp 本地主机上安装 Wordpress
- android - 是否可以在 google play 上使用新密钥上传 android 应用程序
- java - 无法为自定义编辑文本应用样式
- android - 是否有可能将android应用程序启动时间减少到几乎为零?(如 Instagram 和 WhatsApp 新更新)
- python - 在 Python 的其他模块中使用主模块中的实例
- c# - 将 linq sum 查询迁移到 .net core 3.1
- android - 是否可以使用 kotlin 将数据从 recyclerview 适配器共享到 bottomsheetdialogfragment?