【发布时间】:2021-08-17 11:08:16
【问题描述】:
我正在尝试在我的博客上添加 cmets,但是当我尝试提交评论时出现以下错误:
“字段 'id' 需要一个数字,但得到了 'hellooo'。”
Views.py:
class AddComment(generic.CreateView):
model = Comment
form_class = AddComment
template_name = 'add_comment.html'
def form_valid(self, form):
form.instance.post_id = self.kwargs['slug']
return super().form_valid(form)
success_url = reverse_lazy('blog')
forms.py:
class AddComment(forms.ModelForm):
class Meta:
model = Comment
fields = ('name', 'body')
widgets = {
'Name': forms.TextInput(attrs={'class': 'form-control'}),
'body': forms.Textarea(attrs={'class': 'form-control'}),
}
models.py:
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete= models.CASCADE, related_name='comments')
name = models.CharField(max_length=255)
body = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '%s - %s' % (self.post.title, self.name)
urls.py:
from . import views
from django.urls import path
urlpatterns = [
path('', views.PostList.as_view(), name='blog'),
path('add_post/', views.AddPost.as_view(), name='add_post'),
path('edit_post/<slug:slug>/', views.EditPost.as_view(), name='edit_post'),
path('delete_post/<slug:slug>/', views.DeletePost.as_view(), name='delete_post'),
path('<slug:slug>/comment/', views.AddComment.as_view(), name='add_comment'),
path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
]
【问题讨论】:
-
好像
form.instance.post_id必须是一个数值 -
我认为这可能是问题所在,但我不确定如何使那行代码工作。
-
我尝试将其更改为以下内容:form.instance.post_id = self.kwargs['pk'] 但随后我得到了 'pk' 的 KeyError
标签: python django comments blogs