Witam serdecznie, jestem w trakcie pisania projektu na którym użytkownik po zalogowaniu będzie mógł wykonać test i zobaczyć swoje wyniki. Oprócz tego administrator może dodać/usunąć pytania, zmieniać odpowiedzi i zobaczyć wyniki wszystkich uczniów. Problem w tym, że nie wiem jak najlepiej zaprogramować bazę danych, żeby można było dynamicznie zmieniać pytania i odpowiedzi. Próbowałem stworzyć dodatkową komórkę z wyborem odpowiedzi i tam przypisać do każdego wyboru użytkownika i pytanie na które odpowiada, ale nie potrafię tego zrobić. Męczę się z tym już któryś dzień a dokumentacja django w tym temacie nie jest zbyt pomocna.
Oto moje models.py:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Pytania(models.Model):
tresc = models.CharField(max_length=150)
status = models.CharField(default='inactive', max_length=20)
tworca = models.ForeignKey(User, null=True, blank=False, default='kacper', on_delete=models.CASCADE)
def __str__(self):
return self.tresc
class Odpowiedzi(models.Model):
pytanie = models.ForeignKey(Pytania, on_delete=models.CASCADE)
tresc = models.TextField()
prawda = models.BooleanField(default=False)
def __str__(self):
return self.tresc
class Uzytkownicy(models.Model):
nazwa = models.CharField(max_length=30)
haslo = models.CharField(max_length=30)
def __str__(self):
return self.nazwa
class WyborOdpowiedzi(models.Model):
# uzytkownik = models.ForeignKey(Uzytkownicy, null=False, default=Uzytkownicy.get_latest_by, on_delete=models.CASCADE)
# pytanie = models.ForeignKey(Pytania, null=False, default= , on_delete=models.CASCADE)
Odpowiedz = models.CharField(null=True,max_length=50)
class Wyniki(models.Model):
wynik=models.DecimalField(max_digits=5,decimal_places=2)
# uzytkownik = models.ForeignKey(Uzytkownicy, on_delete=models.CASCADE)
Chciałbym w jakiś sposób połączyć odpowiedzi na pytania i wyniki z użytkownikami i z pytaniami na które odpowiadają.
Druga sprawa to odpowiedzi, nie potrafię zrobić tak, żeby można było wybrać odpowiedź na przykład klikając przycisk albo coś w tym rodzaju, próbowałem używać do tego forms.py ale nie działało. Pomyślałem, że uczeń będzie na sztywno wpisywał informacje a później na samym końcu będę je porównywał z prawidłowymi odpowiedziami i na podstawie tego robił punktacje. Może ktoś ma jakiś lepszy pomysł to wklejam poniżej swoje forms.py:
from django import forms
from .models import *
from django.forms import ModelChoiceField
class Nazwa(forms.ModelForm):
haslo = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = Uzytkownicy
fields = [
'nazwa',
'haslo'
]
#
class WyborOdpowiedziForm(forms.ModelForm):
class Meta:
model = WyborOdpowiedzi
fields = ['Odpowiedz']
class Login(forms.ModelForm):
haslo = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = Uzytkownicy
fields = [
'nazwa',
'haslo'
]
class Wyniki(forms.ModelForm):
class Meta:
model = Wyniki
fields = ['wynik']
Pozdrawiam