Python: Получение нескольких столбцов из базы данных с помощью фильтра
Я хочу получить несколько колонок из таблицы File, отфильтровав ее по login_info. Например, он вернет 2 объекта, но как мне это сделать без этой ошибки get() вернул более одного ParentMystudent - он вернул 2! views.py
mystudent = ParentMystudent.objects.get(parent=request.session['login_info'].get('id'))
query = File.objects.get(studentid=mystudent.mystudent_id)
if query:
for obj in query:
student = Student.objects.get(registerid=obj.studentid_id)
obj.student = student
return render(request, 'file.html', {'query': query})
file.html
{% for obj in query %}
{% if obj in query.all %}
<tr>
<td><a href="#" class="fw-bold"></a>{{ forloop.counter }}</td>
<td>{{ obj.soano }}</td>
<td>{{ obj.student.lrn }}</td>
<td><span src="{{ obj.file.url }}" target="_blank">{{ obj.student.lastname }}</span></td>
</tr>
{% endif %}
{% endfor %}
try filter instead of get при использовании get мы получили только одну запись, если записей больше, чем одна, нам также нужно обработать эту ошибку с помощью try catch, но в вашем случае мы можем сделать это с помощью простого фильтра обновите код здесь...
mystudent=ParentMystudent.objects.filter(parent=request.session['login_info'].get('id'))
query = File.objects.filter(studentid=mystudent.mystudent_id) if query: for obj in query: student = Student.objects.filter(registerid=obj.studentid_id) obj.student = student return render(request, 'file.html', {'query': query})