我有以下一行:
test = MyModel.objects.filter(user=request.user)
此行的问题是它将检索整个行。如果我想从某个列中检索数据怎么办?例如,我正在尝试检索列email
我尝试了此操作,但不起作用:email = test.email
答案 0 :(得分:2)
您可以使用.values_list('email', flat=True)
[Django-doc],例如:
test = MyModel.objects.filter(user=request.user).values_list('email', flat=True)
然后test
是一个QuerySet
,用于包装字符串。但是通常这不是好的软件设计。通常,它检索并存储User
对象,而不是列值。一个模型可以添加很多额外的逻辑来防止某些值被存储,并且有时还包含额外的逻辑来进行验证,清除等。
如果User
有一个 MyModel
,则可以改用.get(..)
,例如:
the_email = MyModel.objects.get(user=user).email
或使用.values_list
:
the_email = MyModel.objects.values_list('email', flat=True).get(user=user)