Django ошибка целостности NOT NULL ограничение - PullRequest
0 голосов
/ 01 августа 2020
• 1000 Я не знаю, как пережить это. Помощь приветствуется :) ошибка

ПРОСМОТРЫ

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

URL-адреса приложений

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")
]

ROOT URLS

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")),
]

1 Ответ

1 голос
/ 01 августа 2020

В вашем CreatePost вы должны прикрепить авторизованного пользователя к сообщению:

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

Вы также должны указать success_url [Django -doc] или get_success_url [Django -doc] , чтобы указать, на какое представление вы перенаправляете в случае успешного запроса POST. Вы также можете реализовать метод get_absolute_url [Django -doc] для перенаправления на детали этого объекта Post.

Примечание : обычно лучше использовать settings.AUTH_USER_MODEL [Django -doc] для обращения к пользователю модель, чем использовать модель User [Django -doc] напрямую. Для получения дополнительной информации вы можете увидеть со ссылкой на User модель раздел документации .

Примечание : В Django представления на основе классов (CBV) часто имеют суффикс …View, чтобы избежать cla sh в названиях моделей. Поэтому вы можете переименовать класс представления в CreatePostView вместо CreatePost.

...