【问题标题】:Getting this error - 'tuple' object does not support item assignment收到此错误 - “元组”对象不支持项目分配
【发布时间】:2017-12-17 20:53:11
【问题描述】:

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

我正在尝试在我使用 GenericForeignKey 的模型中获取我关注的用户的帖子

错误指向第一个语句。 - ({% for post in 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)

posts/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 Files\Python35\lib\site-packages\django\core\handlers\exception.py" 在 内 41. response = get_response(request)

文件 "C:\Program Files\Python35\lib\site-packages\django\core\handlers\base.py" 在 _legacy_get_response 249. response = self._get_response(request)

文件 "C:\Program Files\Python35\lib\site-packages\django\core\handlers\base.py" 在 _get_response 187. response = self.process_exception_by_middleware(e, request)

文件 "C:\Program Files\Python35\lib\site-packages\django\core\handlers\base.py" 在 _get_response 185. response = Wrapped_callback(request, *callback_args, **callback_kwargs)

文件 "C:\Program Files\Python35\lib\site-packages\django\views\generic\base.py" 在视图中 68. return self.dispatch(request, *args, **kwargs)

文件 "C:\Program Files\Python35\lib\site-packages\django\views\generic\base.py" 在 派遣 88. return handler(request, *args, **kwargs)

文件 "C:\Users\wahab\Desktop\site1\ostra\ostrakodecommerce\posts\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 Files\Python35\lib\site-packages\django\template\loader.py" 在 渲染到字符串 68. return template.render(context, request)

文件 "C:\Program 文件\Python35\lib\site-packages\django\template\backends\django.py" 在渲染中 66. return self.template.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在渲染中 207. return self._render(context)

文件 "C:\Program _render 中的 Files\Python35\lib\site-packages\django\template\base.py" 199. return self.nodelist.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在渲染中 990. bit = node.render_annotated(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在 渲染注释 957. return self.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\loader_tags.py" 在 使成为 177. 返回已编译的_parent._render(context)

文件 "C:\Program _render 中的 Files\Python35\lib\site-packages\django\template\base.py" 199. return self.nodelist.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在渲染中 990. bit = node.render_annotated(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在 渲染注释 957. return self.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\loader_tags.py" 在 使成为 72. 结果 = block.nodelist.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在渲染中 990. bit = node.render_annotated(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在 渲染注释 957. return self.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\loader_tags.py" 在 使成为 216. 返回模板.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在渲染中 209. return self._render(context)

文件 "C:\Program _render 中的 Files\Python35\lib\site-packages\django\template\base.py" 199. return self.nodelist.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在渲染中 990. bit = node.render_annotated(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\base.py" 在 渲染注释 957. return self.render(context)

文件 "C:\Program Files\Python35\lib\site-packages\django\template\defaulttags.py" 在 使成为 173. len_values = len(值)

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\query.py" in len 232. self._fetch_all()

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\query.py" 在 _fetch_all 1105. self._result_cache = list(self._iterable_class(self))

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\query.py" 在 迭代 53. 结果 = compiler.execute_sql(chunked_fetch=self.chunked_fetch)

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\sql\compiler.py" 在 执行_sql 863. sql,参数 = self.as_sql()

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\sql\compiler.py" 在 as_sql 420. where, w_params = self.compile(self.where) if self.where is not None else("", [])

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\sql\compiler.py" 在 编译 373. sql, params = node.as_sql(self, self.connection)

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\sql\where.py" 在 as_sql 79. sql, params = compiler.compile(child)

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\sql\compiler.py" 在 编译 373. sql, params = node.as_sql(self, self.connection)

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\lookups.py" 在 as_sql 170. rhs_sql, rhs_params = self.process_rhs(编译器, 连接)

文件 "C:\Program Files\Python35\lib\site-packages\django\db\models\lookups.py" 在 进程_rhs 433. params[0] = "%%%s%%" % connection.ops.prep_for_like_query(params[0])

异常类型:TypeError at /profile/-.​​1/public_board 异常 值:“元组”对象不支持项分配

【问题讨论】:

  • 你能说明你是如何提供posts_list的吗?
  • 您能否也发布完整的回溯?
  • 请显示视图渲染posts_list。
  • 发布完整的回溯
  • 这里的“上下文”是什么?它似乎没有在您的视图中定义。

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


【解决方案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)

【讨论】:

  • @Alasdir - 我以前用过它,它运行良好(没有错误),但不显示我关注的用户的帖子
  • 我认为问题出在这个文件中 ** posts/models.py **
  • im_following 是用户的查询集。试试User__in 而不是User__name__in
  • ValueError 不能为“用户”使用查询集:为“用户帖子”使用查询集。
  • 它现在运行良好,这是我的错误,你上次的编辑拯救了我的夜晚
猜你喜欢
  • 2012-01-22
  • 2015-02-05
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 2019-05-28
  • 2018-09-02
  • 1970-01-01
相关资源
最近更新 更多