用于ManyToManyField的django getattr

时间:2017-03-22 02:07:23

标签: python django models

如何使用getattr获取ManyToManyField值?

在模型的保存方法中:

getattr(Project.objects.filter(name=self.name)[0], 'type')
getattr(self, 'type')
getattr(Project.objects.filter(name=self.name)[0], 'user')
getattr(self, 'user')

我明白了:

10kmop

10kmop

auth.User.None

auth.User.None

user是ManyToManyField,我在这里没有。

我怎样才能获得这些用户价值?

2 个答案:

答案 0 :(得分:0)

就像那样:

Project.objects.filter(name=self.name).first().user

答案 1 :(得分:0)

我遇到了类似的问题。 “无”响应绝对不代表没有关联用户。

getattr(self, 'user') 

只是给你一个关联用户的链接,但这个链接的代表是无。 您只需要获取所有对象: getattr(self, 'user').all() 应该做这项工作。

我在这里分享我的工作示例。我在我的自定义标签中使用了 getattr :

@register.filter
def keyvalue(cur_model, key):
    if key == "item_components" :
        return getattr(cur_model, key).all()

    return getattr(cur_model, key)

item_components 是我模型中的 ManyToMany 字段。