gpt4 book ai didi

python - 如何使用 getattr 从模型中获取外键值

转载 作者:太空狗 更新时间:2023-10-29 20:43:54 26 4
gpt4 key购买 nike

我有一个模型Project,我正在使用以下指令获取它的属性

attr = getattr(project, 'id', None)

project 是实例,id 是字段,None 是默认返回类型。

我的问题是:如果我想用这个获取外键怎么办?

获取客户名称

project.customer.name如何通过上述条件获取客户名称?

已经尝试过

if callable(attr):
context[node][field] = '%s' % attr()

当前代码

context = {'project': {}}
fields = ('id', 'name', 'category', 'created_by', customer)

for field in fields:
attr = getattr(project, field, None)
if callable(attr):
context['project'][field] = '%s' % attr()
else:
context['project'][field] = attr

我需要在这里调整客户对象。我可以在我的字段中提供类似 customer__namecustomer.name 的内容,它会填充客户的姓名,但我不确定。

最佳答案

您可以执行如下操作:

def get_repr(value): 
if callable(value):
return '%s' % value()
return value

def get_field(instance, field):
field_path = field.split('.')
attr = instance
for elem in field_path:
try:
attr = getattr(attr, elem)
except AttributeError:
return None
return attr

for field in fields:
context['project'][field] = get_repr(get_field(project, field))

关于python - 如何使用 getattr 从模型中获取外键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20235807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com