带参数的Django模型属性

Pat*_*ttu 4 python django properties

我在Django中有以下模型。

class User(models.Model):
    name = models.CharField(max_length=50)
    ...
    ...

    @property
    def get_info(self, key=None):
        value = self.name if key else 'Hello World'
        return value
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在Django Shell中执行代码时,出现以下错误。

n [4]: user = User.objects.get(id=1)
n [5]: user.get_info(key='test_key')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-f7b917070aee> in <module>()
----> 1 user.get_info(key='test_key')

TypeError: _get_info() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

wim*_*wim 6

只需移除@property装饰器。如果您需要接受参数,则它不是属性。