First Commit
This commit is contained in:
commit
ce0758fbbb
496 changed files with 52062 additions and 0 deletions
57
quiz/models.py
Normal file
57
quiz/models.py
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
from django.db import models
|
||||
from users.models import User
|
||||
|
||||
class Quiz(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='quizzes')
|
||||
name = models.CharField(max_length=155)
|
||||
description = models.TextField(default="")
|
||||
image = models.ImageField(upload_to='quiz_images/', default='', blank=True)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
is_active = models.BooleanField(default=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Question(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='questions')
|
||||
question = models.CharField(max_length=255)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.question
|
||||
|
||||
class Choice(models.Model): # Renommé au singulier
|
||||
id = models.AutoField(primary_key=True)
|
||||
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='choices')
|
||||
choice = models.CharField(max_length=255)
|
||||
is_correct = models.BooleanField(default=False)
|
||||
|
||||
def __str__(self):
|
||||
return self.choice
|
||||
|
||||
class UserQuiz(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_quizzes')
|
||||
quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='user_quizzes') # Ajouté
|
||||
score = models.IntegerField(default=0)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.user.username} - {self.quiz.name}"
|
||||
|
||||
class UserAnswer(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
user_quiz = models.ForeignKey(UserQuiz, on_delete=models.CASCADE, related_name='user_answers')
|
||||
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='user_answers')
|
||||
choice = models.ForeignKey(Choice, on_delete=models.CASCADE, related_name='user_answers')
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.user_quiz.user.username} - {self.question.question}"
|
||||
|
||||
class Meta:
|
||||
unique_together = ('user_quiz', 'question') # Empêche qu'un utilisateur réponde plusieurs fois à la même question.
|
||||
Loading…
Add table
Add a link
Reference in a new issue