Advertisement
Guest User

Untitled

a guest
May 12th, 2020
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. view
  2.  
  3. class PostDetailView(FormMixin,DetailView):
  4. model = Post
  5. template_name = 'post/post_detail.html'
  6. form_class = CommentForm
  7.  
  8. def get_success_url(self):
  9. return reverse('post-detail', kwargs={'pk': self.object.id})
  10.  
  11. def get_context_data(self, **kwargs):
  12.  
  13. context = super(PostDetailView, self).get_context_data(**kwargs)
  14. context['comments'] = Comment.objects.filter(post=self.object)
  15. context['form_comment'] = CommentForm(initial={'post': self.object})
  16. return context
  17.  
  18. def post(self, request, *args, **kwargs):
  19. self.object = self.get_object()
  20. form = self.get_form()
  21. if form.is_valid():
  22. return self.form_valid(form)
  23. else:
  24. return self.form_invalid(form)
  25.  
  26. def form_valid(self, form):
  27. form.instance.user = self.request.user
  28. form.instance.post = self.object
  29. form.save()
  30. return super(PostDetailView, self).form_valid(form)
  31.  
  32.  
  33.  
  34. models
  35. class Post(models.Model):
  36. title = models.CharField(max_length=100, verbose_name='Заголовок')
  37. content = models.TextField(verbose_name='Содержание')
  38. date_posted = models.DateTimeField(default=timezone.now,
  39. verbose_name='Время', null=True, blank=True)
  40. author = models.ForeignKey(User, on_delete=models.CASCADE,
  41. verbose_name='Автор', blank=True)
  42.  
  43.  
  44. def __str__(self):
  45. return self.title
  46.  
  47. def get_absolute_url(self): #дает возможность сылаться на пост для детаил вью
  48. return reverse('post-detail', kwargs={'id': self.id})
  49.  
  50. class Comment(models.Model):
  51.  
  52. user = models.ForeignKey(User, on_delete=models.CASCADE)
  53. post = models.ForeignKey(Post, on_delete=models.CASCADE)
  54. content = models.TextField(max_length=500, verbose_name='')
  55. timestamp = models.DateTimeField(auto_now_add=True,
  56. verbose_name='Время', null=True, blank=True)
  57. reply = models.ForeignKey('Comment', on_delete=models.CASCADE, null=True, blank=True, related_name='replies')
  58.  
  59. class Meta:
  60. ordering = ['-timestamp']
  61.  
  62. def __str__(self):
  63. return '{}'.format(self.content)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement