您好希望有人帮助我应对这一挑战。 得到此错误 - '元组'对象不支持项目分配
我试图在我使用GenericForeignKey的模型中获取我关注的用户的帖子
错误指向第一个语句。 - ( {%for posts_list%} )
{% for post in posts_list %}
{{ post.title }}
{% endfor %}
views.py
class UserPostsBoardView(View):
def get(self, request, *args, **kwargs):
Context = {}
# the users i'm following
im_following = self.request.user.profile.following.all()
query_set = Post.objects.filter(User__name__contains=im_following)
Context["posts_list"] = query_set
return render(request,"posts/user/user_board.html", Context)
文章/ models.py
class Userposts(models.Model):
name = models.CharField(max_length=10, default="User")
val_obj = GenericRelation(Post, object_id_field="object_id",
related_query_name="User")
的UserProfiles / models.py
class Userprofiles(models.Model):
user = models.OneToOneField(User, related_name="profile")
following = models.ManyToManyField(User, blank=True, related_name="follow")
def __str__(self):
return str(self.following.all().count())
回溯:
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\核心\处理器\ exception.py"在 内 41. response = get_response(request)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\核心\处理器\ base.py"在 _legacy_get_response 249. response = self._get_response(request)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\核心\处理器\ base.py"在 _get_response 187. response = self.process_exception_by_middleware(e,request)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\核心\处理器\ base.py"在 _get_response 185. response = wrapped_callback(request,* callback_args,** callback_kwargs)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\意见\通用\ base.py"在视野中 68.返回self.dispatch(request,* args,** kwargs)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\意见\通用\ base.py"在 调度 88.返回处理程序(request,* args,** kwargs)
文件 " C:\用户\瓦哈卜\桌面\站点1 \奥斯特拉\ ostrakodecommerce \讯息\ views.py" 在得到 75. return render(request," posts / user / user_board.html",Context)
文件" C:\ Program Files \ Python35 \ lib \ site-packages \ django \ shortcuts.py" 在渲染中 30. content = loader.render_to_string(template_name,context,request,using = using)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ loader.py"在 render_to_string 68. return template.render(context,request)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\后端\ django.py" 在渲染中 66. return self.template.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在渲染中 207. return self._render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在_render 199. return self.nodelist.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在渲染中 990. bit = node.render_annotated(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在 render_annotated 957. return self.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ loader_tags.py"在 给予 177. return compiled_parent._render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在_render 199. return self.nodelist.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在渲染中 990. bit = node.render_annotated(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在 render_annotated 957. return self.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ loader_tags.py"在 给予 72. result = block.nodelist.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在渲染中 990. bit = node.render_annotated(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在 render_annotated 957. return self.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ loader_tags.py"在 给予 216. return template.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在渲染中 209.返回self._render(上下文)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在_render 199. return self.nodelist.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在渲染中 990. bit = node.render_annotated(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ base.py"在 render_annotated 957. return self.render(context)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\模板\ defaulttags.py"在 给予 173. len_values = len(值)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ query.py"在 len 232. self._fetch_all()
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ query.py"在 _fetch_all 1105. self._result_cache = list(self._iterable_class(self))
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ query.py"在 的 ITER 53. results = compiler.execute_sql(chunked_fetch = self.chunked_fetch)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ SQL \ compiler.py"在 execute_sql 863. sql,params = self.as_sql()
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ SQL \ compiler.py"在 as_sql 420.其中,w_params = self.compile(self.where)如果self.where不是别的("",[])
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ SQL \ compiler.py"在 编 373. sql,params = node.as_sql(self,self.connection)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ SQL \ where.py"在 as_sql 79. sql,params = compiler.compile(child)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ SQL \ compiler.py"在 编 373. sql,params = node.as_sql(self,self.connection)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ lookups.py"在 as_sql 170. rhs_sql,rhs_params = self.process_rhs(编译器,连接)
文件" C:\ Program 文件\ Python35 \ LIB \站点包\ Django的\ DB \型号\ lookups.py"在 process_rhs 433. params [0] =" %%% s %%" %connection.ops.prep_for_like_query(params [0])
异常类型:/profile/-.1/public_board异常中的TypeError 价值:'元组'对象不支持项目分配
答案 0 :(得分:1)
使用__in
代替__contains
。
im_following = self.request.user.profile.following.all().values_list('username', flat=True)
query_set = Post.objects.filter(User__name__in=im_following)