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})

Вернуться на верх