为什么 Django 过滤器给我这个错误"QuerySet"对象没有属性"user_id"?



当我使用这个查询集时,我没有得到任何错误,它返回用户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'

在Django中get和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')

最新更新