我有一个页面“EditStudent”,显示所有缺席者的姓名。此页面允许管理员将其状态从缺席更改为出席,反之亦然,如果需要,可以添加备注。页面中显示的信息涉及两种型号。
名字列表模型。py:包含所有学生信息,如studId、studName等。
马卡特模型。py:保存课堂上所有被打分的学生。所以这个模型不保存缺席者的名字。
所以为了检索缺席者的名字,我对名字列表和MartAtt模型做了一系列的区别。
我成功地保存了EditStudent页面上除姓名以外的所有更改。
名模名单。py:
class Namelist(models.Model):
name = models.CharField(max_length=100)
program = models.CharField(max_length=10)
year = models.IntegerField(default=1)
studType = models.CharField(max_length=15)
courseType = models.CharField(max_length=15)
nationality = models.CharField(max_length=20)
VMSAcc = models.CharField(max_length=30)
classGrp = models.ForeignKey('GroupInfo', on_delete=models.SET_NULL,
null=True)
马卡特模型。py:
class MarkAtt(models.Model):
STATUS=[
('Present', "Present"),
('Absent', "Absent")
]
studName = models.ForeignKey(Namelist,on_delete=models.SET_NULL,blank=True, null=True, default=None)
classGrp = models.ForeignKey(GroupInfo, on_delete=models.SET_NULL, null=True)
currentDate = models.DateField(default=now())
week = models.IntegerField(default=1)
attendance = models.IntegerField(default=100) #100 is present
status = models.CharField(max_length=10, blank=True, null=True, choices=STATUS, default="Present")
remarks = models.CharField(max_length=100, blank=True, null = True, default = " ")
我的观点。py:
def AbsentStudent(request, id=None):
start = None
end = None
w = 1
classGrp = None
attendance = 0
today = datetime.datetime.now()
group = GroupInfo.objects.get(id=id)
q1 = Namelist.objects.filter(classGrp=id).values('name')
q2 = MarkAtt.objects.all().values('studName__name')
q3 = q1.difference(q2)
q4 = Namelist.objects.all()
q5 = q4|q3
form_class = studStatus
form = form_class(request.POST)
if request.method == 'POST':
if form.is_valid():
a = form.save(commit=False)
a.currentDate = datetime.datetime.now().date()
a.classGrp = group
a.attendance = attendance
a.week = w
a.studName = q5
form.save()
return redirect('editStudStatus',id)
else:
form = form = studStatus(request.POST )
context = {
'q4' : q4,
'group' : group,
'form' : form,
'today' :today,
'w' :w
}
return render(request,'studDetails.html',context, {'form':form})
我的模板:
<tbody>
{% for q in q4 %}
<tr>
<td>{{q.name}}</td>
<td>{{q.id}}</td>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<td>{{form.status }}</td>
<td>{{form.remarks}}</td>
<td><button type ="submit" class="btn btn-outline-success" >Submit</button>
</form></td>
</tr>
这是我的表格:
class studStatus(forms.ModelForm):
class Meta:
model = MarkAtt
fields = ['status','remarks']
我从这个实现中收到的错误是:
'NoneType' object has no attribute 'attname'
.
我试图将学生ID作为隐藏文件保存在数据库中。但是studid没有显示在模板中。
如何从未保存在数据库中且与名称列表模型匹配的查询结果中获取studId?