Django:无法解压缩不可迭代的int obj

凯尔

我是一名新程序员,尝试使用通用CreateView在项目中放入“提交评论”页面。该页面在首次加载时正确显示,但是在单击表单的“提交”按钮后,我收到“在/ blog / blog / 4 / create处出现TypeError-无法解压缩不可迭代的int对象”的信息。

这是有问题的通用视图:

class BlogCommentCreate(LoginRequiredMixin, CreateView):
    model = Comment
    template_name = 'blog/comment_create_form.html'
    fields = ['content',]

    def get_context_data(self, **kwargs):
        context = super(BlogCommentCreate, self).get_context_data(**kwargs)
        context['blogpost'] = get_object_or_404(BlogPost, pk = self.kwargs['pk'])
        return context 

    def form_valid(self, form):
        form.instance.comment_author = self.request.user
        form.instance.blogpost = get_object_or_404(BlogPost, self.kwargs['pk'])
        return super(BlogCommentCreate, self).form_valid(form)

    def get_success_url(self):
        return reverse('blogpost-detail', kwargs={'pk': self.kwargs['pk'],})

以下是相关的网址格式。“ comment_create”是创建页面,它给了我有关表单提交的问题,“ blogpost-detail”是我尝试重定向到的页面:

urlpatterns = [
    path('blog/<int:pk>', views.BlogPostDetailView.as_view(), name='blogpost-detail'),
    path('blog/<int:pk>/create', views.BlogCommentCreate.as_view(), name='comment_create')
]

最后,这是评论模型:

class Comment(models.Model):
    date_created = models.DateField(blank=False, default = date.today)
    content = models.TextField(max_length=200)
    comment_author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    blogpost = models.ForeignKey('BlogPost', on_delete=models.CASCADE)

    def __str__(self):
        return self.content

我尝试过的事情:1.重命名get_object_or_404调用中的参数,这些参数可能与内置的django关键字重叠(如此处另一个线程中所建议的)2.重命名模型字段并在视图中使用大写字母。在此步骤3之前和之后进行makemigrations。(尝试1和2之后)擦除并重新创建我的Blogpost对象。4.摆脱掉super()中的参数,因为好像不需要这些参数了吗?

错误文本让我想到的唯一一件事是,上下文可能会接收** kwargs作为列表,而不是一堆单独的参数。但是我对get_context_data或form_valid方法了解不足以解决此问题,因为我只是从发现的Django文档和代码片段中退出。

威廉·范昂塞姆

您应将pkin指定get_object_or_404命名参数:

form.instance.blogpost = get_object_or_404(BlogPost, pk=self.kwargs['pk'])

或者也许更简单,只需将主键设置为blogpost_id

form.instance.blogpost_id = self.kwargs['pk']

您可以将位置参数传递给get_object_or_404,但是这些是Q[Django-doc]对象,例如,以进行更复杂的过滤。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django:无法解压缩不可迭代的int对象

TypeError:无法解压缩不可迭代的int对象

Python-无法解压缩不可迭代的int对象

Python:TypeError:无法解压缩不可迭代的int对象

Django-无法解压缩不可迭代的ManyRelatedManager对象

Django无法解压缩不可迭代的'Q'对象

TypeError:无法在Django视图函数中解压缩不可迭代的int对象

numpy array,TypeError:无法解压缩不可迭代的numpy.int64对象

无法解压缩不可迭代的int对象。BMI计算器

无法解压缩不可迭代的datetime.date对象

tensorflow TypeError:无法解压缩不可迭代的浮点对象

TypeError:无法解压缩不可迭代的NoneType对象

Python TypeError:无法解压缩不可迭代的布尔对象

为什么 obj 不可迭代

(TypeError:无法解压缩不可迭代的int对象)使用合并排序的反转计数器

无法解压缩不可迭代的numpy.float64对象python3 opencv

TypeError:运行排序功能时无法解压缩不可迭代的NoneType对象

我得到一个“类型错误:无法解压缩非迭代int对象”

不能解压缩两个耦合序列的给定递归关系的不可迭代的int对象?

无法解压缩数据;zlib不可用

无法解压缩不可迭代的布尔对象(尝试过滤在auth> User模块中注册的用户的结果时)

当我在终端“ TypeError:无法解压缩不可迭代的NoneType对象”中运行代码时,会发生此错误

无法解压缩不可迭代的numpy.float64对象:Tensorflow 2.0中的Keras数据集

无法打开文件obj SceneKit

无法从解压缩的元组初始化const int

obj[i] 在转换数据时在 javascript 中不可迭代

Django urlpatterns-太多值无法解压缩

如何解压缩迭代器?

传播可迭代的... obj [Symbol.iterator](...)