【问题标题】:Type error in models.py - 'str' object is not callablemodels.py 中的类型错误 - 'str' 对象不可调用
【发布时间】:2019-07-10 09:26:13
【问题描述】:

数据迁移后,我想将 settings.AUTH_USER_MODEL user.username 分配给作者字段。

@property
def author(self):
    return self.user.username() #'line-17'

得到:

/posts/(主页)处的类型错误 'str' 对象不可调用

models.py 在作者中,第 17 行

【问题讨论】:

  • 是的。你为什么叫它?删除那些括号。
  • @DanielRoseman 括号是因为它在一个类中
  • 呃,什么?这是没有意义的。正如错误所说,username 是一个字符串。这不是一种方法。不要叫它。只需return self.user.username
  • 哦,谢谢。那是我的愚蠢。

标签: python django django-models


【解决方案1】:

这应该可以正常工作:

@property
def author(self):
    return self.user.username

用户名是一个字符串,不应该像example_method()这样的方法调用。

【讨论】:

    【解决方案2】:

    由于username是类中的字符串,所以不必使用括号:-

    @property
    def author(self):
        return self.user.username    #'line-17'
    

    如果username 是类中的一个函数,那么你必须使用括号:-

     @property
     def author(self):
         return self.user.username()   # If username is a function.
    

    或者你可以通过callable检查用户名是否有效:-

    callable(self.user.username)
    

    它将返回TrueFalseTrue 表示username 是一个函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      相关资源
      最近更新 更多