나는 django를 처음 접했습니다. 일반적인 UpdateView로 게시물을 업데이트하려고합니다. 그러나 양식을 작성한 후 게시물이 업데이트되지 않고 슬러그 URL을 통해 업데이트보기에 액세스하고 있습니다.
내 모델 :
class Post(models.Model):
title = models.CharField(max_length=60)
post_body = models.TextField()
time_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete= models.CASCADE)
slug = models.SlugField(null=False,unique=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('postdetail', kwargs={'slug': self.slug})
def save(self,*args,**kwargs):
if not self.slug:
author_id = str(self.author.id)
self.slug = slugify(self.title +'-'+author_id)
return super().save(*args, **kwargs)
내 견해 :
class postupdate(LoginRequiredMixin,UserPassesTestMixin,UpdateView):
model = Post
fields = ['title','post_body']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
def test_func(self):
post = self.get_object()
if self.request.user == post.author:
return True
else:
return False
내 URL :
path('post/<slug:slug>/updatepost/', postupdate.as_view(),name = 'updatepost'),
save()
메서드가 매번 호출되지 않는 것 같습니다 .
class Post(models.Model):
# rest of your code
def save(self, *args, **kwargs):
if not self.slug:
author_id = str(self.author.id)
self.slug = slugify(self.title + '-' + author_id)
return super().save(*args, **kwargs) # outside the `if...` clause
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다