Django - 如何检查查询集的所有属性?

May*_*thi 4 authentication django django-models django-users python-3.x

我正在寻找一种在使用 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
Run Code Online (Sandbox Code Playgroud)

小智 6

如果需要,Django 会返回与模型关联的字段元组。姜戈3.0:

from django.contrib.auth.models import User
    User._meta.get_fields()
Run Code Online (Sandbox Code Playgroud)


Nom*_*omi 6

添加@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()
Run Code Online (Sandbox Code Playgroud)

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

user=User.objects.get(id=1)
pprint(vars(user)) 
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*rkL 5

我猜你说的是你想打印一个对象的所有属性而不是QuerySet

要打印对象的所有属性,您可以执行以下操作:

from django.contrib.auth.models import User
user=User.objects.get(id=1)
print(user.__dict__)
Run Code Online (Sandbox Code Playgroud)

但是,如果您只是想了解 django 默认用户模型字段是什么,您可以查看此文档:https : //docs.djangoproject.com/en/3.0/ref/contrib/auth/