【问题标题】:Access model's foreign key related fields using a string?使用字符串访问模型的外键相关字段?
【发布时间】:2013-12-17 06:01:17
【问题描述】:

这里提出了类似的问题:Access Django model's fields using a string instead of dot syntax?

我希望能够根据动态生成的字符串访问 django 模型中的外键相关字段的值。例如,要获取直接字段值,您可以使用:

getattr(instance, 'name')

但我希望能够遵循外键关系,也许像这样:

model_getattr(instance, 'name__othername')

这将需要另一个查询,并且可以通过在“__”上拆分属性字符串来编写函数 model_getattr。但我很想知道是否有“正确”的方法来做到这一点?有可能吗?

更新:

我设法编写了一个函数来满足我的需要,但我仍然想知道是否有首选方法。这个解决方案显然没有它应该有的效率,但它现在可以工作:

def get_attribute(instance, name):

    if hasattr(instance, name):
        return getattr(instance, name)

    names = name.split('__')
    name = names.pop(0)
    if len(names) == 0:
        return None

    if hasattr(instance, name):
        value = getattr(instance, name)
        return get_attribute(value, '__'.join(names))

    return None

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    我认为你需要一些已经在下面的帖子中讨论过的东西

    How to get foreign key values with getattr from models

    【讨论】:

    • 谢谢 - 我在搜索时没有看到这个问题:\
    • 如果您的问题使用上面的链接解决了,那么请接受这个作为答案:-)
    猜你喜欢
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 2013-11-09
    • 2018-03-28
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多