Spaces:
Sleeping
Sleeping
| from django.db import models | |
| import datetime | |
| from django.utils import timezone | |
| from django.contrib.auth import get_user_model | |
| User=get_user_model() | |
| # Create your models here. | |
| class ThemeColor(models.Model): | |
| title = models.CharField(max_length=200,primary_key=True) | |
| primary_color = models.CharField(max_length=7) | |
| secondary_color = models.CharField(max_length=7) | |
| def __str__(self): | |
| return self.pk | |
| class Question(models.Model): | |
| author = models.ForeignKey(User,on_delete=models.CASCADE) | |
| question_text = models.CharField(max_length=300) | |
| pub_date = models.DateTimeField("date published",default=timezone.now) | |
| theme_color = models.ForeignKey(ThemeColor,on_delete=models.SET_NULL,blank=True,null=True) | |
| def __str__(self): | |
| return self.question_text | |
| def total_votes(self): | |
| return len(Vote.objects.filter(choice__question__pk=self.pk)) | |
| def has_user_voted(self,user): | |
| return len(Vote.objects.filter(choice__question__pk=self.pk,user=user))>0 | |
| def was_recently_pub(self): | |
| return self.pub_date >= timezone.now() - datetime.timedelta(days=1) | |
| class Choice(models.Model): | |
| question = models.ForeignKey(Question, on_delete=models.CASCADE,related_name="choice_set") | |
| choice_text = models.CharField(max_length=200) | |
| def __str__(self): | |
| return self.question.question_text+"-"*5+self.choice_text | |
| def vote_count(self): | |
| return len(Vote.objects.filter(choice=self.pk)) | |
| def vote_percent(self): | |
| return "{:.2f}".format(((self.vote_count/(self.question.total_votes))*100)) | |
| class Vote(models.Model): | |
| user = models.ForeignKey(User, on_delete=models.CASCADE) | |
| choice = models.ForeignKey(Choice, on_delete=models.CASCADE,related_name="vote_set") | |
| # def user_voted_questions(self,user): | |
| # return self.objects | |