python - 在 django 模型中存储类方法

标签 python django django-models

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

例如,如果传入是这样的:

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

类属性为:姓名、年龄、性别、电话号码、...

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

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

models.py

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

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

最佳答案

您可以在传入对象上调用每个类方法来获取结果,然后使用相应的字段名称存储在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 的 python 文档和 setattr .

关于python - 在 django 模型中存储类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36578950/

相关文章:

python - 如何继承 python 生成器并覆盖 __iter__

python - Django 合并 2 个具有相同值的字典/查询集

Django:跨越多个多对多关系的查询

python - Django将整数模型字段的范围设置为约束

python - 使用 pysftp 从 SFTP 读取 SHP 文件

python - 在 django 或 python 应用程序中用 % 替换空格

python - 三星不支持 FFmpeg 导出编解码器

python - 如果 django 上的其他表中已存在 ID,如何禁用或隐藏分配/重定向按钮

python - 如何在 Django 中执行连接和聚合计数

python - 'collections.OrderedDict' 对象没有属性 'pk' - django rest 框架