当前位置: 首页 > 知识库问答 >
问题:

django将模型实例转换为dict

凌清夷
2023-03-14

我是Django的初学者。我需要将模型实例转换为类似于Model.objects的字典。值,与关系字段。所以我写了一个小函数来实现这一点:

def _get_proper(instance, field):
    if field.__contains__("__"):
        inst_name = field.split("__")[0]
        new_inst = getattr(instance, inst_name)
        next_field = "__".join(field.split("__")[1:])
        value = _get_proper(new_inst, next_field)
    else:
        value = getattr(instance, field)

    return value

def instance_to_dict(instance, fields):
    return {key: _get_proper(instance, key) for key in fields}

所以,我可以这样使用它:

user_obj = User.objects.select_related(...).get(...)
print instance_to_dict(user_obj, ["name", "city__name", "city_id"])

你能提出更好的解决方案吗?谢谢!附言:对不起我的英语。

共有1个答案

彭鹭洋
2023-03-14

这实际上已经存在于Django,但没有广泛的记录。

from django.forms import model_to_dict
my_obj = User.objects.first()
model_to_dict(my_obj,
    fields = [...], # fields to include
    exclude =  [...], # fields to exclude
)
 类似资料:
  • 问题内容: 我正在尝试集成一个第三方Django应用程序,该应用程序做出了不幸的决定继承自,这对于可插拔应用程序来说是一个很大的禁忌。引用马尔科姆·特雷丁尼克(Malcolm Tredinnick): 不过,更重要的是,就像在Python中一样,你不能使用Django的模型继承来“贬低”。就是说,如果你已经创建了User实例,那么你必须在不掩饰的情况下使该实例与你尚未创建的子类实例相对应。 好吧,

  • 我已经使用tensorflow后端训练了一个DNN,我想在FireBase中托管它。训练好的模型被保存为.meta文件,我尝试使用下面的代码将模型转换为tflite,但我遇到了一些错误。那么我如何将这个模型转换成Tensorflow Lite呢?

  • 我已经从一个.xsd文件创建了一个.ecore和.genmodel元模型。我试图从一个符合.xsd文件的.xml文件创建一个模型实例(因此也符合.ecore元模型)。我怎样才能达到这个目标呢?

  • 我目前在转换张量流时遇到问题。pb模型到TFlite格式。我目前正在遵循谷歌代码实验室的指示,错误说 Traceback(最近调用的最后一次):文件/usr/local/bin/tflite_convert,第5行,在tensorflow.lite.python.tflite_convert导入主重要错误:没有模块命名lite.python.tflite_convert 我正在使用谷歌提供的命令

  • 问题内容: 如何将Django模型对象及其所有字段转换为字典?理想情况下,所有内容都包含带有的外键和字段。 让我详细说明。假设我有一个类似以下的Django模型: 在终端中,我已执行以下操作: 我想将其转换为以下字典: 问题答案: 有多种方法可以将实例转换为字典,并具有不同程度的转角案例处理和接近所需结果的程度。 1。 instance.dict 哪个返回 到目前为止,这是最简单的方法,但是缺少,

  • 如何将一个django模型对象转换为一个包含所有字段的判决?所有理想情况下包括外键和字段可编辑=False。 让我详细说明一下。假设我有一个django模型,如下所示: 在终端中,我完成了以下工作: 我想将其转换为以下词典: 回答不满意的问题: Django:将整个模型对象集转换为单个字典 如何将Django模型对象转换为字典,并且仍然保留它们的外键?