модель formset с динамическим c внешним ключом - ref - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок ie до django. Мне нужна помощь. Я пытаюсь создать систему посещаемости. Используются следующие модели:

studentinfo -> хранит базовую c информацию о ученике, включая оценку / стандарт / классы, в которых учится ученик '' '

class studentInfo(models.Model): 
    firstName = models.CharField(max_length=20,)
    lastName = models.CharField(max_length=20)
    admissionNumber = models.CharField(max_length=10, unique=True)
    status = models.CharField(max_length=3, choices=STATUS_TYPES, default='S')
    gender = models.CharField(max_length=2, choices=GENDER)
    fathersName = models.CharField(max_length=40)
    mothersName = models.CharField(max_length=40)

'' '

gradeInfo -> содержит информацию обо всех классах / стандартах / классах в школе

' ''

class gradeSectionMaster(models.Model):
    gradeName = models.CharField(max_length=4)
    def __str__(self):
        return self.gradeName

' ''

teacherInfo -> содержит информацию обо всех учителях в школе

'' '

class teacherInfo(models.Model):
    GENDER = (
        ('M', 'MALE'),
        ('F', 'FEMALE'),
        ('O', 'OTHER')
    )
    firstName = models.CharField(max_length=25)
    lastName = models.CharField(max_length=25)
    empCode = models.CharField(max_length=10, unique=True)
    mobile = models.CharField(max_length=10)
    email = models.EmailField(unique=True)
    date_of_joining = models.DateField(null = True)
    gender = models.CharField(max_length=2, choices=GENDER)

' ''

classteacherinfo -> таблица сопоставления, содержащая два атрибута, один атрибут - OneToOneField для teacherInfo, а другой атрибут - OneToOneField gradeInfo

'' '

class grade_class_teacher(models.Model):
    grade = models.OneToOneField(gradeSectionMaster, on_delete=models.DO_NOTHING)
    teacher = models.OneToOneField(teacherInfo, on_delete=models.DO_NOTHING)

' ''

Модель studentAttendance будет использоваться для хранения информации о посещаемости учащегося, которая выглядит следующим образом. '' '

class studentAttendance(models.Model):
    ATTENDANCE_TYPE = (
        ('PRESENT', 'PRESENT'),
        ('ABSENT', 'ABSENT'),
        ('APPLIED LEAVE','APPLIED LEAVE'),
        ('HOLIDAY', 'HOLIDAY'),
        ('OTHER', 'OTHER')
    )
    student = models.ForeignKey(studentInfo, on_delete=models.DO_NOTHING)
    attended = models.CharField(max_length=16, choices=ATTENDANCE_TYPE, default='PRESENT')
    date = models.DateField()

' ''

Что я пытаюсь добиться с помощью этих моделей, так это когда учитель входит в систему и нажимает на отметку посещаемости в шаблоне, которую пользователь должен перенаправить на страница с несколькими формами, равными количеству учащихся, обучающихся в классе, где пользователь назначен учителем класса .-> studentInfo.objects.filter (grade = I), где пользователь должен быть основным учителем I класса и форм отображаются так, что имя каждого студента отображается как поле в шаблоне, и напротив него у нас есть раскрывающийся список ATTENDANCE_TYPE и другое поле текущей даты по умолчанию.

Я прочитал документацию относительно modelformset_factory, inline_formsetfactory и не смог найти ответ на то, как она будет отображена, и форма будет создана

форма должна выглядеть так, как показано ниже: '' '

student name             attended          date
student1                 present            04-04-20
student2                 present            04-04-20

' '' нужна помощь о том, как это сделать или что нужно учиться для достижения этого, поскольку я не знаю, что нужно искать д

...