Python/Django调试:打印模型&x27;s包含数据
也许是一个简单的问题,但我不知道如何总结才能找到答案 是否可以打印出模型的所有可用字段 例如,在iPython中,我可以导入模型,只需写入模型名称,选项卡将显示模型具有的所有可用字段 在代码中不使用某种shell就可以做到这一点吗Python/Django调试:打印模型&x27;s包含数据,python,django,debugging,printing,Python,Django,Debugging,Printing,也许是一个简单的问题,但我不知道如何总结才能找到答案 是否可以打印出模型的所有可用字段 例如,在iPython中,我可以导入模型,只需写入模型名称,选项卡将显示模型具有的所有可用字段 在代码中不使用某种shell就可以做到这一点吗 我想使用某种命令(例如,print\u fields(self))来获取模型中的内容。为什么不实现\uuuuuunicode\uuu: def __unicode__(self): return self.whatever_field + self.anoth
我想使用某种命令(例如,
print\u fields(self)
)来获取模型中的内容。为什么不实现\uuuuuunicode\uuu
:
def __unicode__(self):
return self.whatever_field + self.another_field
要检查模型上的字段,我通常使用
?
:
>>> 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)
也许可以试试:
data=serializers.serialize(“json”,models.MyModel.objects.all(),indent=4)
JSON格式易于打印和阅读;) 我认为您只需要在模型的实例上使用
\uuuuu dict\uuuu
。(但它不会在ipython中提供类似制表符完成的方法)。另外,通常使用\uuuuuu doc\uuuuuuuu
也是非常有用的
如果您有模型实例,还可以查看inspect,您只需调用:
model_queryset.all().values()
有关使用模型类本身的字段列表,请参见
或者直接查看文档-对于Django 1.10,有一个专门的章节介绍如何使用字段:受@zeekay答案的启发,使用以下内容查看模型实例的字段和相应值:
[x for x in Cheese.objects.all()[0].__dict__.items() if not x[0].startswith('_')]
因为我不知道这些领域是什么?这是我的主要问题。你只是想知道字段名称还是字段中的数据?@Bryce Siedschlaw:字段就足够了:)这是为了帮助,我得到了我的答案。请看帮助()找到了我需要的一切:)太简单了。。。该死的,我很笨:D哦,
?
只在shell中工作。哦,好的,我误读了,还以为你在问如何签入IPython!即使是单个对象的完整跟踪。令人惊叹的
[x for x in Cheese.objects.all()[0].__dict__.items() if not x[0].startswith('_')]