54 lines
2.1 KiB
Python
54 lines
2.1 KiB
Python
from django.db import models
|
|
from django.utils import timezone
|
|
|
|
class Level(models.Model):
|
|
title = models.CharField(max_length=200, verbose_name="Մակարդակ")
|
|
description = models.TextField(blank=True, verbose_name="Նկարագրություն")
|
|
order = models.IntegerField(default=0, verbose_name="Հերթականություն")
|
|
|
|
def __str__(self):
|
|
return self.title
|
|
|
|
class Meta:
|
|
verbose_name = "Մակարդակ"
|
|
verbose_name_plural = "Մակարդակներ"
|
|
ordering = ['order']
|
|
|
|
class Question(models.Model):
|
|
level = models.ForeignKey(Level, on_delete=models.CASCADE, related_name="questions", verbose_name="Մակարդակ")
|
|
text = models.TextField(verbose_name="Հարց")
|
|
points = models.IntegerField(default=10, verbose_name="Միավորներ")
|
|
time_limit = models.IntegerField(default=30, verbose_name="Ժամանակ (վայրկյան)")
|
|
|
|
def __str__(self):
|
|
return self.text[:50]
|
|
|
|
class Meta:
|
|
verbose_name = "Հարց"
|
|
verbose_name_plural = "Հարցեր"
|
|
|
|
class Option(models.Model):
|
|
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name="options", verbose_name="Հարց")
|
|
text = models.CharField(max_length=500, verbose_name="Տարբերակ")
|
|
is_correct = models.BooleanField(default=False, verbose_name="Ճիշտ է")
|
|
|
|
def __str__(self):
|
|
return self.text
|
|
|
|
class Meta:
|
|
verbose_name = "Տարբերակ"
|
|
verbose_name_plural = "Տարբերակներ"
|
|
|
|
class Score(models.Model):
|
|
player_name = models.CharField(max_length=100, verbose_name="Խաղացող")
|
|
score = models.IntegerField(verbose_name="Միավոր")
|
|
level = models.ForeignKey(Level, on_delete=models.CASCADE, verbose_name="Մակարդակ")
|
|
date_played = models.DateTimeField(default=timezone.now, verbose_name="Ամսաթիվ")
|
|
|
|
def __str__(self):
|
|
return f"{self.player_name} - {self.score}"
|
|
|
|
class Meta:
|
|
verbose_name = "Արդյունք"
|
|
verbose_name_plural = "Արդյունքներ"
|
|
ordering = ['-score', '-date_played'] |