Метод filter в блоке try не работает в django
У меня есть модель под названием properties, которая содержит данные о продукте с соответствующими идентификаторами пользователей. Идентификатор пользователя называется uid в модели.
Я написал функцию в views.py для получения товаров, которые публикуются только зарегистрированным пользователем. Я использую в ней метод filter, но он не работает. Как я могу это решить?
def view_products(request):
try:
user = request.user.id
c = properties.objects.filter(uid=user,status=True)
return render(request,'view_products.html',{'c':c})
except:
txt = """<script>alert('You have no properties to view...');window.location='/userhome/';</script>"""
return HttpResponse(txt)```
Насколько я знаю, AnonymousUser
имеет поле id
, которое может быть даже None
, и если вы используете .filter()
, это не вызывает исключения. Как вы хотите обработать логику исключения?
Вы должны написать так:
def view_products(request):
if request.user.is_authenticated:
user = request.user.id
c = properties.objects.filter(uid=user, status=True)
return render(request, 'view_products.html', {'c': c})
txt = """<script>alert('You have no properties to view...');window.location='/userhome/';</script>"""
return HttpResponse(txt)
is_authenticated
- это флаг/свойство, где вы можете легко определить, аутентифицирован ли пользователь (вошел в систему) или нет.