Почему фильтр Django выдает мне эту ошибку 'Объект QuerySet' не имеет атрибута 'user_id'?
Когда я использую этот набор запросов, я не получаю никакой ошибки, и он возвращает идентификатор пользователя
UserProfile.objects.get(forget_password_token=forget_password_token)
print(user.user_id)
>>>19
Но когда я использую этот набор запросов UserProfile.objects.filter(forget_password_token=forget_password_token)
почему я получаю эту ошибку QuerySet' object has no attribute 'user_id'
в чем разница между get и filter в Django? почему здесь не работает метод filter?
Когда пользователь вводит неправильный код в поля ввода, возникает эта ошибка
UserProfile matching query does not exist.
При использовании .get() возвращается экземпляр найденного объекта, так что вы можете проверить непосредственно user_id. При использовании .filter() возвращается объект набора запросов, содержащий все найденные экземпляры объекта (его можно сравнить со списком результатов с некоторыми отличиями, так как это объектный тип Queryset). Таким образом, если вы хотите проверить user_id, вы должны сначала перебрать все элементы набора запросов
test = UserProfile.objects.filter(forget_password_token=forget_password_token)
for result in test:
print(test.user_id)
Другим способом может быть возврат результата в виде списка с помощью .values_list()
test = UserProfile.objects.filter(forget_password_token=forget_password_token).values_list('user_id')