created_at = models.DateField(auto_now_add=True, null=True)
auto_created=True -> auto_now_add=True 속성으로 변경해야 정상적으로 데이터가 저장됨
import self as self
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
# Create your views here.
from django.urls import reverse, reverse_lazy
from django.utils.decorators import method_decorator
from django.views.generic import CreateView, DetailView, UpdateView, DeleteView
from articleapp.decorations import article_ownership_required
from articleapp.forms import ArticleCreationForm
from articleapp.models import Article
from profileapp.decoration import profile_ownership_required
from profileapp.forms import ProfileCreationForm
from profileapp.models import Profile
@method_decorator(login_required, 'get')
@method_decorator(login_required, 'post')
class ArticleCreateView(CreateView):
model = Article
form_class = ArticleCreationForm
template_name = 'articleapp/create.html'
def form_valid(self, form):
temp_article = form.save(commit=False)
temp_article.writer = self.request.user
temp_article.save()
return super().form_valid(form)
def get_success_url(selfself):
return reverse('articleapp:detail', kwargs={'pk': self.obfect.pk})
class ArticleDetailView(DetailView):
model = Article
context_object_name = 'target_article'
template_name = 'articleapp/detail.html'
@method_decorator(article_ownership_required, 'get')
@method_decorator(article_ownership_required, 'post')
class ArticleUpdateView(UpdateView):
model = Profile
context_object_name = 'target_profile'
form_class = ProfileCreationForm
template_name = 'articleapp/update.html'
def get_success_url(self):
return reverse('articleapp:detail', kwargs={'pk': self.object.user.pk})
@method_decorator(article_ownership_required, 'get')
@method_decorator(article_ownership_required, 'post')
class ArticleDeleteView(DeleteView):
model = Article
context_object_name = 'target_artile'
success_url = reverse_lazy('articleapp:list')
template_name = 'articleapp/delete.html'
Articleapp 구현
ariticleapp, views.py