Poll_App / polls /models.py
Anuj-Panthri's picture
added default color option and fixed timezone warning while creating question
252fc68
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
@property
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
@property
def vote_count(self):
return len(Vote.objects.filter(choice=self.pk))
@property
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