我觉得这是一个非常简单的问题,但我是Python的新手,我正在同时学习Django。
我的目标是创建一个字符串字典表示,即它的字典格式化,但字符串是Django中Model的实例。我怎么能这样做?是否有一个内置函数,我可以直接从对象的实例调用,或者我是否必须定义一个?
更新
我想在模型定义本身中调用此功能,即我正在实现需要此功能的类方法或函数。我正在考虑的功能类似于python的内置函数locals()
,但应该只返回模型的属性。
我还想补充一点,我将在模型的实例上调用此功能,该实例尚未保存到数据库中。所以从本质上讲,我将处理一个模型的实例,该实例表示一个尚未存在于数据库中的记录。所以使用Manager or QuerySet
的任何函数我都猜不到为什么我正在寻找。
示例:
class Person(models.Model):
name = ...
age = ...
def func_doing_something(self):
#get the string dictionary representation of this model's instance
#do something to it
#return something
谢谢大家!
答案 0 :(得分:1)
使用p = Person(name ='john',age = 10).values()
见这里:https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values
要使用字符串,请使用:
s = str(p[0])
答案 1 :(得分:1)
您可以将对象序列化为json格式,例如与django内置serializers 这样可以很容易地反序列化。
答案 2 :(得分:1)
我从SO post找到了我正在寻找的解决方案......
一些Django对象obj
[(field.name, getattr(obj,field.name)) for field in obj._meta.fields]
并在结果上调用dict()
。