python-3.x Django -如何检查查询集的所有属性?

pxq42qpu  于 2023-04-22  发布在  Python
关注(0)|答案(4)|浏览(111)

我正在寻找一种方法来获得一个变量的所有属性后,我们设置的值在它使用queryset。
例如...参考下面的代码...使用user.id或user.first_name我可以获得该属性的值。但是如果我想检查它有什么其他属性?有没有方法可以获得。
如果我们使用user,那么它只会返回我们在admin.py中定义的内容。

代码,我用的是Django Shell

from django.contrib.auth.models import User
user=User.objects.get(id=1)
user.first_name # Will return some value say testUser
user.id  # will return some value say 1
m2xkgtsf

m2xkgtsf1#

我猜你的意思是想打印object的所有属性,而不是QuerySet
要打印对象的所有属性,可以执行以下操作:

from django.contrib.auth.models import User
user=User.objects.get(id=1)
print(user.__dict__)

但是如果你只是想知道django默认的用户模型字段是什么,你可以查看这个文档:https://docs.djangoproject.com/en/3.0/ref/contrib/auth/

t3psigkw

t3psigkw2#

Django返回一个与模型相关的字段元组。Django 3.0:

from django.contrib.auth.models import User
    User._meta.get_fields()
rt4zxlrg

rt4zxlrg3#

补充@MarkL的回答:你可以把它打印出来以获得更好的可读性。

from django.contrib.auth.models import User
from pprint import pprint # new
user=User.objects.get(id=1)
pprint(user.__dict__) # new ---->  pprint() instead of print()

另一种我总是喜欢使用__dict__的方法是vars()方法:

user=User.objects.get(id=1)
pprint(vars(user))

两者都返回相同的结果,但对我来说,**vars()**比dunder dict方法(即__dict__)更方便编写,因为我懒得写4个下划线。

q3qa4bjr

q3qa4bjr4#

基于MarkL的答案,这里是同样的事情,但格式更好:

[f"{key}: {value}" for key, value in user.__dict__.items()]

(对不起,我没有足够的代表张贴这作为一个评论。

相关问题