Spaces:
Running
Running
File size: 1,972 Bytes
13c805c 1ae15f5 13c805c 1ae15f5 13c805c 833b984 13c805c 1ae15f5 13c805c 252fc68 833b984 13c805c 1ae15f5 13c805c 13198fd 13c805c 1ae15f5 13198fd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
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
|