Несколько значений в выпадающем списке для аннотации, а затем сохранить в другой таблице, которая является studentsession,.....Поле 'id' ожидало число, но получило ''.
Ошибка здесь в том, что я пытаюсь получить lecturersession из этой таблицы и затем заполнить studentsession, но у меня есть несколько значений для lecturersession, каждый лектор должен зарегистрировать свою собственную сессию, чтобы студент также был зарегистрирован для сессии, пожалуйста, правильно ли я делаю или нет, должен ли я заполнить ее непосредственно из источника, где таблица сессий
my views.py
class StudentSessionRegistration(View):
def get(self, request, *args, **kwargs):
student = Students.objects.get(admin=request.user)
session =
LecturerSession.objects.values('lecturersession').
annotate(Count('lecturersession')).order_by()
context = {
'session': session
}
return render(request, 'superadmin/student/add-session.html', context)
def post(self, request, *args, **kwargs):
student = request.POST.get('student')
student = Students.objects.get(admin=request.user.id)
session = request.POST.get('studentsession')
session = LecturerSession.objects.get(id=session)
if StudentSession.objects.filter(student=student,
studentsession=session).exists():
messages.error(request, f'Hello {request.user.username}! Your Session is
already registered')
return HttpResponseRedirect(reverse('emisapp:student-session-registration'))
if not session:
messages.error(request, 'Please select session')
return HttpResponseRedirect(reverse('emisapp:student-session-registration'))
try:
StudentSession.objects.create(student=student, studentsession=session)
messages.success(request, "Student Session Registration Successfully")
return HttpResponseRedirect(reverse('emisapp:student-session-registration'))
except:
messages.error(request, "Error while saving Student Session Registration")
return HttpResponseRedirect(reverse('emisapp:student-session-registration'))
шаблон
<div class="form-group">
<label>Select Faculty</label>
<select name="studentsession" id="studentsession" required
class="form-control">
<option value="{{s.id}}">--Select a Session--</option>
{% for s in session %}
<option value="{{s.id}}">{{ s.slug }}</option>
{% endfor %}
</select>
</div>
Models.py
class LecturerSession(models.Model):
id = models.AutoField(primary_key=True)
lecturer = models.ForeignKey('Lecturers',
related_name='lecturersession',null=True, on_delete=models.CASCADE)
lecturersession = models.ForeignKey(SessionYearModel,
related_name='lecturersession',null=True, on_delete=models.CASCADE)
slug = models.SlugField(null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
objects = models.Manager()
def __str__(self) -> str:
return str(self.lecturersession)
def save(self, *args, **kwargs):
self.slug = slugify(self.lecturersession)
super(LecturerSession, self).save(*args, **kwargs)