DB Model für Quiz Spiele
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
from django.contrib import admin
|
||||
from . import models
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(QuizGame)
|
||||
admin.site.register(QuizGameParticipant)
|
||||
37
core/play/migrations/0001_initial.py
Normal file
37
core/play/migrations/0001_initial.py
Normal file
@@ -0,0 +1,37 @@
|
||||
# Generated by Django 5.1.7 on 2025-03-15 13:48
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('library', '0015_alter_qivipquiz_difficulty'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='QuizGame',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('join_code', models.CharField(max_length=6, unique=True)),
|
||||
('host_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='host_user', to=settings.AUTH_USER_MODEL)),
|
||||
('quiz_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='library.qivipquiz')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='QuizGameParticipant',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('display_name', models.CharField(max_length=15, verbose_name='Anzeigename')),
|
||||
('score', models.IntegerField(max_length=10, verbose_name='Punkte')),
|
||||
('avatar', models.CharField(max_length=200)),
|
||||
('quiz_game', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='participant', to='play.quizgame')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -1,3 +1,27 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from library.models import QivipQuiz
|
||||
import random, string
|
||||
|
||||
# Create your models here.
|
||||
class QuizGame(models.Model):
|
||||
host_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='host_user')
|
||||
join_code = models.CharField(max_length=6, unique=True)
|
||||
quiz_id = models.ForeignKey(QivipQuiz, on_delete=models.CASCADE)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.join_code:
|
||||
self.join_code = self.generate_unique_code()
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def generate_unique_code(self):
|
||||
for i in range(10):
|
||||
new_code = ''.join(random.choices(string.ascii_letters + string.digits, k=6))
|
||||
if not QuizGame.objects.filter(join_code=new_code).exists():
|
||||
return new_code
|
||||
|
||||
class QuizGameParticipant(models.Model):
|
||||
display_name = models.CharField(verbose_name="Anzeigename", max_length=15)
|
||||
quiz_game = models.ForeignKey(QuizGame, on_delete=models.CASCADE, related_name="participant")
|
||||
score = models.IntegerField(verbose_name="Punkte", max_length=10)
|
||||
avatar = models.CharField(max_length=200)
|
||||
Reference in New Issue
Block a user