Yukeshkumar
Yukeshkumar

Reputation: 534

TypeError at /post/3/comment/ 'dict' object is not callable

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 at /post/3/comment/ 'dict' object is not callable Request Method: POST Request URL: http://localhost:8000/post/3/comment/ Django Version: 2.1.7 Exception Type: TypeError Exception Value: 'dict' object is not callable

Upvotes: -1

Views: 291

Answers (2)

VIVEK VIKASH
VIVEK VIKASH

Reputation: 179

You can try this also:

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

Upvotes: 0

Daniel Roseman
Daniel Roseman

Reputation: 600059

The error is telling you exactly what is wrong. self.kwargs is a dict, but you are calling it.

You probably meant:

data = Post.objects.get(id=self.kwargs['pk'])

Upvotes: 5

Related Questions