У меня есть страница "EditStudent", которая отображает все заочное имя. На этой странице администратор может изменить свой статус с отсутствующего на настоящий или наоборот, при необходимости добавить замечания. Информация, отображаемая на странице, касалась двух моделей.
Namelist model.py: содержит всю информацию о студентах, такую как studId, studName и другие.
MarkAtt model.py: сохранить всех посещенных учеников, которые были отмечены во время урока. Таким образом, эта модель не сохраняет имя отсутствующих.
Таким образом, чтобы получить имя отсутствующего, я установил разницу между списком имен и моделями MartAtt.
Мне удалось сохранить все изменения, сделанные на странице EditStudent, кроме имени.
Список имен models.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)
MarkAtt models.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 = " ")
Мои Views.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'
.
Я попытался поместить идентификатор студента в качестве скрытого файла, чтобы сохранить его в базе данных. но студид не показывается в шаблоне.
Как получить StudId из результата запроса, который не сохранен в базе данных и не соответствует модели списка имен?