Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from django.contrib.auth.models import AbstractUser
- from django.db import models
- from django.utils.html import escape,mark_safe
- class User(AbstractUser):
- is_student = models.BooleanField(default= False)
- is_teacher = models.BooleanField(default= False)
- class Subject(models.Model):
- name = models.CharField(max_length=30)
- color = models.CharField(max_length=7,default='#007bff')
- def __str__(self):
- return self.name
- def get_html_badge(self):
- name = escape(self.name)
- color = escape(self.color)
- html = '<span class="badge badge-primary" style="background-color: %s">%s</span>'%(color,name)
- return mark_safe(html)
- class Quiz(models.Model):
- owner = models.ForeignKey(User,related_name='quizzes',on_delete=models.CASCADE)
- name = models.CharField(max_length=255)
- subject = models.ForeignKey(Subject,related_name='quizzes',on_delete=models.CASCADE)
- def __str__(self):
- return self.name
- class Question(models.Model):
- quiz = models.ForeignKey(Quiz,related_name='questions',on_delete=models.CASCADE)
- text = models.CharField('Question',max_length=255)
- def __str__(self):
- return self.text
- class Answer(models.Model):
- question = models.ForeignKey(Question,on_delete=models.CASCADE,related_name='answers')
- text = models.CharField('Answer',max_length=255)
- is_correct = models.BooleanField('Correct answer',default=False)
- def __str__(self):
- self.text
- class Student(models.Model):
- user = models.OneToOneField(User,on_delete=models.CASCADE, primary_key=True)
- quizzes = models.ManyToManyField(Subject,through='TakenQuiz')
- interests = models.ManyToManyField(Subject,related_name='interested_students')
- def get_unanswered_questions(self,quiz):
- answered_questions = self.quiz_answers.filter(answer__question__quiz = quiz).values_list('answer__question__pk',flat=True)
- questions = quiz.questions.exclude(pk=answered_questions).order_by('text')
- return questions
- def __str__(self):
- return self.user.username
- class TakenQuiz(models.Model):
- student = models.ForeignKey(Student,related_name='taken_quizzes')
- quiz = models.ForeignKey(Quiz,related_name='taken_quizes',on_delete=models.CASCADE)
- score = models.FloatField()
- date = models.DateTimeField(auto_now_add=True)
- class StudentAnswer(models.Model):
- student = models.ForeignKey(Student,related_name='quiz_answers')
- answer = models.ForeignKey(Answer,on_delete=models.CASCADE,related_name="+")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement