我是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"])
你能提出更好的解决方案吗?谢谢! 附言:对我的英语不好感到抱歉。