django - 无法使用列表在 django 中获取记录
问题描述
查看代码:下面是我的查看代码功能,我想通过它检索列表中用户的详细信息。
def followingview(request):
if request.user.is_authenticated:
uid= request.session.get('uid')
ufg= userfollowing.objects.filter(userno_id=uid)
flist=[]
for i in ufg:
flist.append(i.following_id)
print(flist)
urr= User.objects.filter(id=(flist))
context={'ufg':ufg,'ur':urr}
return render(request,'following.html',context)
html代码:
<li class="text-center">
{%for j in urr%}
<h4 class="text-capitalize">UserName: {{j.username}}</h4>
<p class="text-muted text-capitalize">FirstName: {{j.first_name}}</p>
<p class="text-muted text-capitalize">LastName: {{j.last_name}}</p>
{%endfor%}
</li>
模型:
class userfollowing(models.Model):
userno= models.ForeignKey(User,on_delete=models.CASCADE)
following_id= models.IntegerField()
解决方案
您需要使用__in
查找进行过滤:
urr= User.objects.filter(id__in=flist)
话虽如此,如果我们制作following_id
a ,您可以有效地过滤ForeignKey
,所以:
class userfollowing(models.Model):
userno= models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='followees'
)
following = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='follows'
)
然后我们可以查询:
urr = User.objects.filter(follows__userno_id=uid)
注意:Django 中的模型是用PascalCase而不是snake_case 编写的,因此您可能希望将模型从 重命名
为userfollowing
UserFollowing
。
注意:通常使用
settings.AUTH_USER_MODEL
[Django-doc]引用用户模型比直接使用User
模型 [Django-doc]更好。有关更多信息,您可以查看文档的引用User
模型部分。
推荐阅读
- notifications - SummerNote 信息/通知区域不显示
- data-science-experience - 现在服务已迁移到 Watson Studio,我如何找到旧的机器学习部署?
- autodesk-forge - 加载多个模型时在伪造查看器中获取选定元素属性
- android - 谷歌翻译 Android 监听器
- powershell - 如何使用 Azure-AD 和 Intune 的 Graph API 将密码作为参数提供?
- javascript - ExtJS PHP/MySQL 后端连接器错误
- email - DKIM 是否验证 smtp/envelope-from 或邮件/标头来自?
- c# - 捆绑不反映变化
- xamarin - Xamarin PortSip VoIP 客户端
- node.js - 节点以错误退出状态 3221225786 结束