Python/Django 调试:打印模型数据内容
这可能是个简单的问题,但我不知道怎么总结才能找到我的答案。
有没有办法打印出模型中所有可用的字段?
比如在iPython中,我可以导入模型,然后只要写上模型的名字,按下Tab键就能看到这个模型所有的字段。
有没有办法在代码中做到这一点,而不需要使用什么命令行?
我想用某种命令(比如 print_fields(self)
)来查看模型里面有什么。
6 个回答
11
我觉得你只需要在模型的实例上使用 __dict__
。不过要注意,这样做不会像在ipython中那样提供方法的自动补全功能。另外,使用 __doc__
通常也很有帮助。
你还可以看看 inspect 这个模块,链接在这里:http://docs.python.org/library/inspect.html
25
如果你已经有了模型实例,你可以直接调用:
model_queryset.all().values()
想要获取模型类本身的字段列表,可以查看这个链接:Django: 获取模型字段列表?
或者直接查看文档——对于Django 1.10,有一个专门的部分讲解如何处理字段:https://docs.djangoproject.com/en/1.10/ref/models/meta/#retrieving-all-field-instances-of-a-model
24
为了检查一个模型中的字段,我通常会用 ?
:
>>> Person?
Type: ModelBase
Base Class: <class 'django.db.models.base.ModelBase'>
String Form: <class 'foo.bar.models.Person'>
Namespace: Interactive
File: /home/zk/ve/django/foo/bar/models.py
Docstring:
Person(id, first_name, last_name)
你也可以使用 help()
。如果你有这个模型的一个实例,你可以查看 __dict__
:
>>> [x for x in Person().__dict__.keys() if not x.startswith('_')]
<<< ['first_name', 'last_name', 'id']