【问题标题】:django getattr for ManyToManyField多对多字段的 django getattr
【发布时间】:2017-08-13 23:11:14
【问题描述】:

如何使用 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,我这里没有。

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

【问题讨论】:

    标签: python django models


    【解决方案1】:

    这样:

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

    【讨论】:

    • 这只是意味着您没有与项目关联的用户。
    【解决方案2】:

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

    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 字段。

    【讨论】:

      猜你喜欢
      • 2013-04-27
      • 2011-02-05
      • 2020-10-28
      • 2014-06-28
      • 2011-01-14
      • 2021-11-20
      • 2016-02-23
      • 2016-03-21
      相关资源
      最近更新 更多