Ошибка атрибута: у объекта 'Project' нет атрибута 'getVoteCount'

Я получаю ошибку "'Project' object has no attribute 'getVoteCount'", когда пытаюсь отправить "upvote" в проект (и, следовательно, обновить коэффициент положительных голосов).

Ошибка Exception Location расположена 28 в коде представления, где говорится о 'projectObj.getVoteCount'. Я пробовал играть с этим, но не могу разобраться.

Первый правильный проект, поэтому объясните простыми словами, пожалуйста!

Спасибо!

Models.py:

class Project (models.Model):
    owner = models.ForeignKey(
        Profile, null=True, blank=True, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    description = RichTextField(null=True,blank=True)
    featured_image = models.ImageField(null=True, blank=True, default="default.jpg")
    subjective = RichTextField(null=True,blank=True)
    differential_diagnosis = RichTextField(null=True,blank=True)
    objective = RichTextField(null=True,blank=True)
    diagnosis = RichTextField(null=True,blank=True)
    treatment = RichTextField(null=True,blank=True)
    plan = RichTextField(null=True,blank=True)
    references = RichTextField(null=True,blank=True)
    tags = models.ManyToManyField('Tag', blank=True)
    vote_total =models.IntegerField(default=0, null=True, blank=True)
    vote_ratio =models.IntegerField(default=0, null=True, blank=True)
    created = models.DateTimeField(auto_now_add=True)
    id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-vote_ratio', '-vote_total','title']


class Review(models.Model):
    VOTE_TYPE = (
        ('up', 'Up Vote'),
        ('down', 'Down Vote'),
    )
    owner = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    body = models.TextField(null=True,blank=True)
    value = models.CharField(max_length=200, choices=VOTE_TYPE)
    created = models.DateTimeField(auto_now_add=True)
    id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)

    class Meta:
        unique_together = [['owner', 'project']]
        
    def __str__(self):
        return self.value

    @property
    def getVoteCount(self):
        reviews = self.review_set.all()
        upVotes = reviews.filter(value='up').count()
        totalVotes = reviews.count()

        ratio = (upVotes / totalVotes) * 100
        self.vote_total = totalVotes
        self.vote_ratio = ratio 
        
        self.save()

Views.py:

def project (request, pk):
    projectObj = Project.objects.get(id=pk)
    form = ReviewForm()

    if request.method == 'POST':
        form = ReviewForm(request.POST)
        review = form.save(commit=False)
        review.project = projectObj
        review.owner = request.user.profile
        review.save()

        projectObj.getVoteCount 

        messages.success(request, 'Your review was successfully submitted!')
        return redirect ('project', pk=projectObj.id)

    return render(request, 'projects/single-project.html', {'project':projectObj, 'form':form})
Вернуться на верх