Объект 'Photo' не является итерируемым
У меня есть веб-страница, которая показывает детали из моей базы данных, но когда пользователь нажимает на кнопку просмотра, она перенаправляет меня на страницу деталей и получает id, но в то же время она дает мне ошибку 'Photo' object is not iterable, что не так с моим кодом? Как мне исправить ошибку?
ошибка возврата:
views.py
@login_required()
def details(request, pk):
allusername = Photo.objects.get(id=pk)
context = {'allusername': allusername}
print(pk)
return render(request, 'details.html', context)
details.html
gallery.html
Вот как выглядит моя страница галереи, поэтому когда пользователь нажимает на кнопку просмотра, он должен получить ID и перенаправить его на страницу подробностей и просмотреть более подробную информацию, которая находится в базе данных.
внутри вашего файла details.html
измените это
{% for photo in allusername %}
<tr>
<td>{{photo.Datetime}}</td>
<td>{{photo.status}}</td>
<td>{{photo.Datetime}}</td>
</tr>
{% endfor %}
to
<tr>
<td>{{allusername.Datetime}}</td>
<td>{{allusername.status}}</td>
<td>{{allusername.Datetime}}</td>
</tr>
проблема в том, что вы используете цикл for над неитерируемым объектом.
Когда вы используете метод get в наборе запросов, он возвращает только один объект, если он найден, или ошибку "Запрос не существует", если объект не найден. Таким образом, вы пытались выполнить итерацию по одному элементу, поэтому вы и получаете эту ошибку.
Просто удалите цикл for и сохраните остальной код, как показано ниже.
<!-- not to include {% for photo in allusername %} -->
<tr>
<td>{{allusername.Datetime}}</td>
<td>{{allusername.status}}</td>
<td>{{allusername.Datetime}}</td>
</tr>
<!-- {% endfor %} -->