【问题标题】:Django integrity error NOT NULL constraintDjango完整性错误NOT NULL约束
【发布时间】:2020-08-01 12:36:37
【问题描述】:

我正在创建一个需要登录才能撰写帖子的博客站点。截至目前,我刚刚创建了创建帖子并更新了帖子视图,但是当我尝试提交创建的帖子时,会引发此完整性错误。我不知道如何度过这个难关。帮助表示赞赏:) the error

查看次数

class CreatePost(LoginRequiredMixin,CreateView):
form_class = forms.PostForm
template_name = "blog/create_post.html"

应用网址

app_name = 'blog'

urlpatterns = [
path("login/",auth_view.LoginView.as_view(template_name="blog/login.html"), name='login'),
path("logout/",auth_view.LogoutView.as_view(), name="logout"),
path("signup/",views.SignUpView.as_view(), name="signup"),
path("new/",views.CreatePost.as_view(), name="newpost")
]

根网址

urlpatterns = [
path('admin/', admin.site.urls),
path('', views.HomePageView.as_view(), name = "home"),
path('logged/',views.LoggedPage.as_view(), name='logged'),
path('thanks',views.ThanksPage.as_view(), name='thanks'),
path('blog/',include("blog.urls", namespace='blog')),
path('blog/',include("django.contrib.auth.urls")),
]

【问题讨论】:

  • 请在这里写你的代码而不是代码图片。
  • 不要在图片中添加代码。使用```你的代码```
  • 请包含代码,而不是代码图片:idownvotedbecau.se/imageofcode
  • 请edit您的问题。

标签: python django django-models django-forms django-views


【解决方案1】:

在您的CreatePost 中,您应该将登录用户附加到帖子中:

class CreatePost(LoginRequiredMixin, CreateView):
    form_class = forms.PostForm
    template_name = 'blog/create_post.html'
    
    def form_valid(self, form):
        form.instance.user = request.user
        return super().form_valid(form)

您还应该指定 success_url [Django-doc] 或 get_success_url [Django-doc] 以指定在成功的 POST 请求时重定向到哪个视图。您还可以实现get_absolute_url method [Django-doc],以重定向到该Post 对象的详细信息。


注意:通常使用settings.AUTH_USER_MODEL [Django-doc] 引用用户模型比直接使用User model [Django-doc] 更好。更多信息可以查看referencing the User model section of the documentation。


注意:在 Django 中,基于类的视图 (CBV) 通常具有 …View 后缀,以避免与模型名称发生冲突。 因此,您可以考虑将视图类重命名为 CreatePostView,而不是 CreatePost。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2015-08-10
    • 1970-01-01
    • 2023-02-20
    • 2016-12-13
    • 2017-03-01
    • 2015-11-01
    相关资源
    最近更新 更多