Вопрос об отношениях между сущностями
Мне нужна помощь в области Entity Relation. В этом конкретном проекте студент в классе (т.е. J.S.S 1) должен иметь возможность посещать экзамены для J.S.S 1 в определенном семестре и академической сессии (мне нужно иметь класс, академическую сессию и семестр), обратите внимание, что в моем регионе у нас есть "Академическая сессия, в академической сессии у нас есть семестры, в семестре у нас есть 1-й, 2-й и 3-й семестр. Студент должен иметь возможность выбрать поле для класса, предмета, академической сессии и семестра и распечатать результат для каждого семестра и сессии. Наконец, вопросы должны быть расположены в случайном порядке, например, вопрос 1 по английскому языку для ученика класса J.S.S. 1 может быть вопросом 5 для другого ученика того же класса по тому же предмету.
Здесь представлена модель администратора:
from django.db import models
from django.conf import settings
class Course(models.Model):
course=models.CharField(max_length=150,unique=True)
def __str__(self):
return self.course
class Paper(models.Model):
paper=models.CharField(max_length=150)
def __str__(self):
return self.paper
class Questions(models.Model):
qs_no=models.IntegerField()
course=models.ForeignKey(Course,on_delete=models.CASCADE)
paper=models.ForeignKey(Paper,on_delete=models.CASCADE)
questions=models.TextField()
answers=models.CharField(max_length=20)
option_a=models.TextField()
option_b=models.TextField()
option_c=models.TextField()
option_d=models.TextField()
def __str__(self):
return str(self.qs_no)+self.questions
class Answer(models.Model):
student=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
question=models.ForeignKey(Questions,on_delete=models.CASCADE)
answer=models.CharField(max_length=20)
date=models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.answer
Здесь представлена модель учетной записи:
from django.db import models
from admin_dash.models import Course
from django.contrib.auth.models import (BaseUserManager, AbstractBaseUser)
class UserManager(BaseUserManager):
def create_user(self, phone, roll, course, password, name=None):
if isinstance(course, int):
course = Course.objects.get(pk=course)
user = self.model(phone=phone, roll=roll, course=course, name=name)
user.set_password(password)
user.save()
return user
def create_superuser(self, phone, roll, course, password, name=None):
user = self.create_user(phone=phone, roll=roll, course=course, password=password,
name=name)
user.is_staff = True
user.is_admin = True
user.save()
return user
class User(AbstractBaseUser):
phone = models.CharField(verbose_name='phone number', max_length=12, unique=True)
name = models.CharField(max_length=150, null=True)
roll = models.CharField(max_length=20, verbose_name='roll', unique=True)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
date_joind=models.DateTimeField(verbose_name='date joind', auto_now_add=True)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
USERNAME_FIELD = 'roll'
REQUIRED_FIELDS = ['name', 'phone', 'course']
objects = UserManager()
def __str__(self):
return self.name
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return True