Django如何将模型实例转换为字典?

14

我是Django的初学者。我需要将模型实例转换为类似于Model.objects.values的字典形式,包括关系字段。因此我编写了一个小函数来完成这个任务:

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个回答

27

4
我知道这个,但是这个函数不能与city__name等相关字段一起使用。 - Taras Protsenko
链接无法使用。这是更新后的链接:http://timsaylor.com/convert-django-model-instances-to-dictionaries - jackbravo
链接(源代码)在以下链接中 https://github.com/django/django/blob/master/django/forms/models.py#L70 - Dimitrios Mistriotis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接