【发布时间】:2022-08-09 02:10:26
【问题描述】:
我正在尝试使用 cbv 保存一个对象,我刚开始使用它,我正在尝试使用创建视图保存一个对象,但出现此错误:
\"NOT NULL 约束失败:forum_question.user_id\"
我将感谢初学者对如何解决此问题的友好解释以及提示,谢谢!
模型.py:
class Question(VoteModel, models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=30)
detail = models.TextField()
tags = models.TextField(default=\'\')
add_time = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
表格.py:
class QuestionForm(ModelForm):
class Meta:
model = Question
fields = [\'title\', \'detail\', \'tags\']
视图.py:
class AskForm(CreateView):
def post(self):
user = self.request.user
model = Question
form_class = QuestionForm
template_name = \'forum/ask-question.html\'
if form_class.is_valid():
form_class.save()
例外?:
编辑3:
额外信息:
回溯(最近一次通话最后): 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/core/handlers/exception.py\",第 47 行,在内部 响应 = get_response(请求) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/core/handlers/base.py\",第 181 行,在 _get_response 响应 = Wrapped_callback(request, *callback_args, **callback_kwargs) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/views/generic/base.py\",第 69 行,在视图中 return self.dispatch(request, *args, **kwargs) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/views/generic/base.py\",第 101 行,在调度中 返回处理程序(请求,*args,**kwargs) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/views/generic/edit.py\",第 174 行,在帖子中 return super().post(request, *args, **kwargs) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/views/generic/edit.py\",第 144 行,在帖子中 返回 self.form_valid(form) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/views/generic/edit.py\",第 127 行,在 form_valid self.object = form.save() 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/forms/models.py\",第 466 行,保存 self.instance.save() 文件 \"/home/titanium/.local/lib/python3.8/site-packages/vote/models.py\",第 67 行,保存 super(VoteModel, self).save(*args, **kwargs) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/models/base.py\",第 743 行,保存 self.save_base(使用=使用,force_insert=force_insert, 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/models/base.py\",第 780 行,在 save_base 更新 = self._save_table( 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/models/base.py\",第 885 行,在 _save_table 结果 = self._do_insert(cls._base_manager,使用,字段,returning_fields,原始) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/models/base.py\",第 923 行,在 _do_insert 返回经理._插入( 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/models/manager.py\",第 85 行,在 manager_method 中 返回 getattr(self.get_queryset(), name)(*args, **kwargs) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/models/query.py\",第 1301 行,在 _insert return query.get_compiler(using=using).execute_sql(returning_fields) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/models/sql/compiler.py\",第 1441 行,在 execute_sql cursor.execute(sql,参数) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/backends/utils.py\",第 99 行,在执行 返回 super().execute(sql, 参数) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/backends/utils.py\",第 67 行,在执行 return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/backends/utils.py\",第 76 行,在 _execute_with_wrappers 返回执行程序(sql,参数,许多,上下文) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/backends/utils.py\",第 85 行,在 _execute 返回 self.cursor.execute(sql, params) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/utils.py\",第 90 行,在出口从 exc_value 提高 dj_exc_value.with_traceback(traceback) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/backends/utils.py\",第 85 行,在 _execute 返回 self.cursor.execute(sql, params) 文件 \"/home/titanium/.local/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py\",第 416 行,在执行 返回 Database.Cursor.execute(self, query, params) django.db.utils.IntegrityError:NOT NULL 约束失败:forum_question.user_id [2022 年 4 月 14 日 09:58:02] \"POST /ask/ HTTP/1.1\" 500 175023
-
当您使用
Question模型创建QuestionForm时,您需要添加User,因为您将其设为ForeignKey 关系并且您没有将其指定为NULL(必需),默认情况下它是必需的(NOT NULL )。