在django模型中存储一个类方法

时间:2016-04-12 16:23:20

标签: python django django-models

我正在使用Django框架开发一个应用程序,在其中的一部分我收到一个包含数据的类实例。现在我想将这些数据存储在我的数据库中,我该怎么办?

例如,传入是这样的:

>>>type(incoming)
<class 'foo.bar.model'>
>>>incoming.name
'hosein'

类属性为:名称,年龄,性别,phone_no,...

现在我想将所有这些属性值存储在我的应用程序模型中,名为 app_name.models.Profile

我知道我可以定义这样的模型:

models.py

class Profile(models.Model):
    name = models.CharField(max_length = 255)
    age = models.IntegerField()
    # And so on ...

但这不是我的答案,我正在寻找永久而准确的方法,除了逐个定义和存储字段。 有没有办法为我的模型类定义一些动态模型字段?

1 个答案:

答案 0 :(得分:2)

您可以调用incoming个对象上的每个类方法来获取结果,然后使用相应的字段名称存储在Profile实例中。这是一个粗略的例子,您可能需要稍微调整一下以使其适合您:

# create a Profile object
new_profile = Profile()

for name in dir(incoming):
    # loop on each method for incoming object
    attribute = getattr(incoming, name)
    if not ismethod(attribute):
        # get the value of the attribute
        value = attribute
    setattr(new_profile, name, value)

new_profile.save()
关于getattrsetattr

python doc。