我正在使用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 ...
但这不是我的答案,我正在寻找永久而准确的方法,除了逐个定义和存储字段。 有没有办法为我的模型类定义一些动态模型字段?
答案 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()
关于getattr和setattr的python doc。