Django中显示所有属性的方法'属于创建对象的值?

时间:2018-01-06 20:22:31

标签: django python-3.x django-orm

Django中是否有某种方法可以检索/显示所有属性'属于通过Django创建的对象的值?

在Python shell中,我使用了以下内容:

>>> print(p.first_name, p.last_name, p.software_name)
Linus Torvalds Linux

p是创建的对象,其属性为 first_name,last_name,software_name 。我已经创建了几个应用于 mysql 中特定数据库的模型。

我想了解显示此类信息的其他方法。

6 个答案:

答案 0 :(得分:2)

有点晚了,但是由于没有答案提到最简单的方法:

>>> # assuming your object was already saved in the database and p is the QuerySet
>>> # with your object
>>> p.values()
<QuerySet [{'first_name': 'Linus', 'last_name': 'Torvalds', 'software_name': 'Linux'}]>

答案 1 :(得分:1)

尝试使用内置的python dir()方法

目录(对象)

答案 2 :(得分:1)

Python 内置的特殊属性 object.__dict__ 可以检索对象的所有属性。

p.__dict__

答案 3 :(得分:0)

我认为你的问题并不清楚你想在哪里展示这些信息。如果你设置:

QuerySet = MyModel.objects.all() #MyModel is your model name

到view.py中的变量(如QuerySet),然后在模板中标记它,它将显示该模型中的所有信息。当然你也可以使用for循环分别打印每个元素。请查看Django文档中的QuerySet,了解如何过滤信息并使用模型数据。

答案 4 :(得分:0)

您可以使用model_to_dict功能。请检查此answer

此模块将其打包为mixin:django-model-to-dict

一旦您的对象处于字典形式,打印或任何处理应该更容易。

答案 5 :(得分:0)

您可以为相应的模型类定义__str__方法,如下所示。

class User(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    software_name = models.CharField(max_length=100)

    def __str__(self):
        return self.first_name + " " + self.last_name + " " + self.software_name

假设您的第一个条目是数据库中的 Linus Torvalds Linux ,您可以像在 django Shell 上那样实现自己的愿望。

from main_app.models import User
e = User.objects.get(pk=1)
e