Ошибка TypeEr в / post / 3 / comment / 'dict' не вызывается - PullRequest
0 голосов
/ 19 марта 2019
class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
    author = models.CharField(max_length=200)
    text = models.TextField()
    image = models.ImageField(upload_to='Comment_Pictures', blank=True)
    date_posted = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.text

    def get_absolute_url(self):
        return '/'


class CommentAddView(LoginRequiredMixin, CreateView):
    model = Comment
    fields = ['text', 'image']

    def form_valid(self, form):
        form.instance.author = self.request.user
        form.instance.post = Post.objects.get(id=self.kwargs['pk'])
        return super().form_valid(form)

class CommentDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
    model = Comment
    success_url = '/'

    def test_func(self):
        comment = self.get_object()
        if request.user == comment.author:
            return True
        return False

Ошибка TypeError в / post / 3 / comment / 'dict' Метод запроса: URL запроса POST: http://localhost:8000/post/3/comment/ Версия Django: 2.1.7 Тип исключения: TypeError Значение исключения: объект 'dict' не может быть вызван

Ответы [ 2 ]

6 голосов
/ 19 марта 2019

Ошибка говорит вам, что именно не так.self.kwargs - это диктат, но вы его называете.

Вы, вероятно, имели в виду:

data = Post.objects.get(id=self.kwargs['pk'])
0 голосов
/ 19 марта 2019

Вы можете попробовать это также:

form.instance.post = Post.objects.get(id=self.kwargs.get('pk'))
...