1

我觉得这是一个很简单的问题,但是我是Python新手,同时我也在学习Django。

我的目标是创建一个字符串字典表示形式,即它的字典格式是一个字符串,是 Django 中模型实例的一个字符串。我怎么能那样做?是否有可以直接从对象实例调用的内置函数,还是必须定义一个?

更新:

我想在模型定义本身中调用这个功能,即我正在实现一个需要这个功能的类方法或函数。我正在考虑一种功能,它的行为类似于 python 的内置函数locals(),但应该只返回模型的属性。

我还想补充一点,我将在尚未保存到数据库的模型实例上调用此功能。因此,从本质上讲,我将处理一个模型实例,该实例表示尚未在数据库中的记录。因此,我猜任何使用 a 的功能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

谢谢大家!

4

3 回答 3

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])
于 2012-06-06T09:17:29.773 回答
1

您可以将对象序列化为 json 格式,例如使用 django 内置序列化程序 这使您可以很容易地反序列化。

于 2012-06-06T09:30:12.433 回答
1

我从这个SO 帖子中找到了我正在寻找的解决方案......

一些 Django 对象obj

[(field.name, getattr(obj,field.name)) for field in obj._meta.fields]

只需调用dict()结果即可。

于 2012-06-09T18:42:10.603 回答