在Django Rest Framework中复制模型字段实例的列表



我发现自己陷入了这个问题,我可能把标题用错了,但会解释我想做什么以及我愿意完成什么。我有一个考勤模型,每天老师都要在考勤表上做标记。我不希望出现这样的情况,即在生成注册数据时必须每天捕获数据,但我希望创建一个类似表格的表格,其中包含一个班级中所有学生的副本,只有状态是要编辑和保存的字段,这样在保存每个学生时,就会创建他们的出勤记录。我的模型如下:

class StudentAttendanceTimeSheet(models.Model):
DAILY_ATTENDANCE_STATUS_CHOICES = [(1, 'Present'), (2, 'absent'), (3, 'sick')]

student = models.Foreignkey('Student', related_name='attendances', on_delete=models.CASCADE)
attendance_status = models.CharField(max_length=50, choices=DAILY_ATTENDANCE_STATUS_CHOICES, default='1')
date = models.DateField(default=datetime.today())
class = models.ForeignKey('Class', related_name='class_timesheets, on_delete=models.CASCADE)

我想制作一个步骤表单,当我点击选择按钮时,就会复制那些预先填充了特定类的数据库数据的字段。因此,该班所有学生的名单。

希望有人能帮助我如何为这样的问题创建Django Rest-create视图。提前谢谢。Ngiyabonga

这就是我处理这个问题的方式

from django.db import models
from basedata.models import SoftDeletionModel
from basedata.constants import ATTENDANCE_STATUS_CHOICES
from django.conf import settings


class Attendance(SoftDeletionModel):
date = models.DateTimeField(auto_now_add=True)
klass = models.ForeignKey(
'klasses.StudentClass', 
models.SET_NULL, 
null=True,
blank=True,
related_name='attendances'
)
recorded_by = models.ForeignKey(
"people.StaffUser", 
on_delete=models.SET_NULL, 
related_name='recorder', 
null=True
)
complete=models.BooleanField(default=False, blank=True)

def save(self, *args, **kwargs):
super(Attendance, self).save(*args, **kwargs)
if self.records.count() <= 0:
for student in self.klass.students.all():
self.records.create(student=student, status='present') 
# separate sql query i guess for each entry created.
def __str__(self):
return f"{self.id}, {self.date}"


class AttendanceRecord(SoftDeletionModel):
attendance = models.ForeignKey(
'Attendance', 
on_delete=models.SET_NULL, 
null=True, 
blank=True,
related_name='records'
)
student = models.ForeignKey(
'people.Student', 
on_delete=models.SET_NULL,
blank=True,
null=True,
related_name='attendancerecords'
)
status = models.CharField(max_length=100, choices=ATTENDANCE_STATUS_CHOICES)

def __str__(self):
return f"(STUDENT: {self.student}, STATUS: {self.status})"

通过循环遍历班上的所有学生,我可以为所有学生创建默认的数据库条目,然后编辑

最新更新