При попытке загрузить страницу я получаю следующее сообщение: local variable 'like' referenced before assignment
. В моем контексте он возвращается к "like": like,
.Локальная переменная 'like', на которую ссылаются перед присвоением
Может кто-нибудь, пожалуйста, помогите мне исправить это?
Спасибо!
views.py:
def photo_detail(request, photo_slug):
photos = Photo.objects.filter(slug=photo_slug)
obj = get_object_or_404(Photo, slug=photo_slug)
all_comments = obj.comment_set.all()
truncate_amount = 3
display_comments = obj.comment_set.all()[:int(truncate_amount)]
for c in all_comments:
c.get_children()
comment_form = CommentForm()
try:
like = Like.objects.get(pk=obj.id)
except Like.DoesNotExist:
pass
context = {
"all_comments": all_comments,
"comment_form": comment_form,
"display_comments": display_comments,
"like": like,
"obj": obj,
"photos": photos,
"truncate_amount": truncate_amount
}
return render(request, "photos/photo_detail.html", context)
Вы должны удалить строки 'фотографии = Photo.objects.filter (пробковый = photo_slug)' как вы не используете 'photos' после этого. Чего вы пытаетесь достичь с помощью 'like = Like.objects.get (pk = obj.id)'? 'obj.id' является идентификатором объекта' Photo', вы не можете использовать его для извлечения объекта 'Like'. Я предполагаю, что вы пытаетесь сделать что-то вроде 'Like.objects.get (photo = obj)', возможно, разместите свои модели, чтобы мы могли помочь вам больше. – aumo
Спасибо @aumo за ваш ввод! Я изменил строку на 'Like.objects.get (photo = obj)'. Я сохранил 'photos = Photo.objects.filter (slug = photo_slug)', потому что я использую его позже в своем html-шаблоне для отображения изображений. – jape
Не '' фото_slug' уникальное поле? Если это так, все, что 'photos' будет когда-либо содержать, это список, содержащий один элемент, который является' obj'. – aumo