Django查询筛选一组数据

Django查询筛选一组数据,django,filter,character-encoding,Django,Filter,Character Encoding,如果有一个查询 following = Relations.objects.filter(initiated_by = request.user) 其中,我让所有用户跟随当前登录的用户, 我想显示这些用户的博客帖子。使用如下查询: blog = New.objects.filter(created_by = following) 它只向我显示id为1的用户的博客文章,尽管当前登录的用户实际上并不关注他 在模板中,我有: {% for object in blog %} <

如果有一个查询

    following = Relations.objects.filter(initiated_by = request.user)
其中,我让所有用户跟随当前登录的用户, 我想显示这些用户的博客帖子。使用如下查询:

    blog = New.objects.filter(created_by = following)
它只向我显示id为1的用户的博客文章,尽管当前登录的用户实际上并不关注他 在模板中,我有:

{% for object in blog %}
<a href='/accounts/profile_view/{{object.created_by}}/'> {{object.created_by}}</a> <br /> 
{{object.post}}<br />
{% endfor %}
我哪里错了?

.filter返回一个集合,而不是一个事件。所以,我要说的问题是,第二个查询应该是

blog = New.objects.filter(created_by__in = following)
或者更简单:

bloc = New.objects.filter(created_by__initiated_by = request.user)

但我觉得很奇怪。。。你确定你的模型设计吗?

简单地说,我想“翻译”这样一个查询:select*from new,follow where created_by=user或created_by=select*from new where follow=users因此,您可能需要使用django“Q”对象,该对象允许进行“或”查询:从django.db.models导入Q MyModel.objects.filterQsome_字段=something | Qsome_other_字段=foobar奇怪的是,它没有输出我想要的内容。我想要实现的查询类似于:select*from new,FOWER where created\u by=user或created\u by=select*from new where FOWER=userI不确定是否有sql或for django ORM,因此,我可能会使用两个查询。您可以使用Django.db中的'Q'对象对Django执行'OR'