Python/Django调试:打印模型包含数据

Jac*_*Leo 16 python printing django debugging

也许是一个简单的问题,但我不知道如何总结它,我会找到答案.

是否可以打印出所有可用的模型字段?

例如,在iPython中,我可以导入模型,只需编写模型名称,选项卡将显示模型具有的所有可用字段.

是否可以在不使用某种shell的情况下在代码中执行此操作?

我想使用某种命令(ea print_fields(self))并获取模型中的内容.

zee*_*kay 19

要检查模型上的字段,我通常使用?:

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

你也可以使用help().如果您有模型的实例,您可以查看__dict__:

>>> [x for x in Person().__dict__.keys() if not x.startswith('_')]
<<< ['first_name', 'last_name', 'id']
Run Code Online (Sandbox Code Playgroud)


Ris*_*nha 8

如果你有模型实例,你可以简单地调用:

model_queryset.all().values()
Run Code Online (Sandbox Code Playgroud)

https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values

对于使用模型类本身的字段列表,请参阅Django:获取模型字段列表?

或直接文档 - 对于Django 1.10,有一个关于如何使用字段的专用部分:https://docs.djangoproject.com/en/1.10/ref/models/meta/#retrieving-all-field-instances-of -一个模型


dr *_*bob 6

我想你只想__dict__在一个模型的实例上使用.(虽然不会在ipython中提供像tab完成的方法).__doc__通常使用也非常有帮助.

另请查看http://docs.python.org/library/inspect.html