得到此错误 - '元组'对象不支持项目分配

时间:2017-07-13 07:44:36

标签: python django python-3.x django-models django-templates

您好希望有人帮助我应对这一挑战。 得到此错误 - '元组'对象不支持项目分配

我试图在我使用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_pa​​rent._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(s​​elf))

     

文件" 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   价值:'元组'对象不支持项目分配

1 个答案:

答案 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)