Как сделать табличный ввод данных?
У меня есть описанные модели журнала, и мне нужно сделать ввод данных, но я не знаю как. Вот модели:
class Group(models.Model):
name = models.CharField(max_length=10)
curator = models.ForeignKey(User, blank=True, on_delete=models.CASCADE)
class StudentGroup(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
student = models.ForeignKey(User, on_delete=models.CASCADE)
@classmethod
def students_by_group(cls, group):
students = cls.objects.all().filter(group=group)
return students
class GradeBook(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
def add_new_column(self, date):
new_column = BookColumn(gradebook=self, date=date)
new_column.save()
class StudentGroupLesson(models.Model):
lesson = models.ForeignKey(Lesson, blank=False, on_delete=models.CASCADE)
student_group = models.ForeignKey(Group, blank=False, on_delete=models.CASCADE)
gradebook = models.ForeignKey(GradeBook, blank=True, null=True, on_delete=models.CASCADE)
@receiver(pre_save, sender=StudentGroupLesson)
def create_gradebook(sender, instance, **kwargs):
new_gradebook = GradeBook(group=instance.student_group)
new_gradebook.save()
instance.gradebook = new_gradebook
class BookColumn(models.Model):
date = models.DateField(blank=False)
gradebook = models.ForeignKey(GradeBook, blank=True, on_delete=models.CASCADE)
class Grade(models.Model):
date = models.ForeignKey(BookColumn, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
value = models.CharField(max_length=3, default='')
@receiver(post_save, sender=BookColumn)
def create_grade(sender, instance, created, **kwargs):
if created:
gradebook = instance.gradebook
students = StudentGroup.students_by_group(group=gradebook.group)
for student in students:
new_grade = Grade(date=instance, user=User.objects.get(id=student.id))
new_grade.save()
У меня данные должны вводиться с этих моделей. Первый столбец имена, первай строка даты, и далее не их пересечениях присвоить оценку конкретной дате и пользователю.
