added Vote
This commit is contained in:
+20
-1
@@ -56,4 +56,23 @@ class Issue(models.Model):
|
|||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.title
|
return self.title
|
||||||
|
|
||||||
|
def vote_count(self):
|
||||||
|
return self.votes.count()
|
||||||
|
|
||||||
|
def has_user_voted(self, user):
|
||||||
|
if user.is_authenticated:
|
||||||
|
return self.votes.filter(user=user).exists()
|
||||||
|
return False
|
||||||
|
|
||||||
|
class Vote(models.Model):
|
||||||
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
|
issue = models.ForeignKey(Issue, on_delete=models.CASCADE, related_name='votes')
|
||||||
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
unique_together = ('user', 'issue') # Prevent duplicate votes per user
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.user.username} voted on {self.issue.title}"
|
||||||
|
|||||||
Reference in New Issue
Block a user