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

2024-01-08

我有一个模型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__name or customer.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))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 getattr 从模型中获取外键值 的相关文章

随机推荐