Python Django decorators@transaction_atomic&@静态法相互干扰?
我的Django型号:Python Django decorators@transaction_atomic&@静态法相互干扰?,python,django,static-methods,atomic,python-decorators,Python,Django,Static Methods,Atomic,Python Decorators,我的Django型号: from django.db import models class MyModel(models.Model): my_field1 = models.IntegerField() @staticmethod def my_method(): return "XXXX" 如您所见,当我运行my_method()时,它可以工作: >>> MyModel.my_method() 'XXXX' 但随后我将dec
from django.db import models
class MyModel(models.Model):
my_field1 = models.IntegerField()
@staticmethod
def my_method():
return "XXXX"
如您所见,当我运行my_method()
时,它可以工作:
>>> MyModel.my_method()
'XXXX'
但随后我将decorator@transaction\u-atomic
添加到my\u-method()
:
现在,当我尝试做同样的事情时,它现在失败了:
>>> MyModel.my_method()
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: __call__() takes exactly 2 arguments (1 given)
>>MyModel.my_方法()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:\uuuuu call\uuuuuuu()正好接受2个参数(给定1个)
为什么??我该怎么修呢。
我希望
my_method()
同时是静态方法和原子方法。如果您切换装饰器,使用@staticmethod
作为最外层的装饰器,会发生什么情况?@knbk有效!!!!如果你用@staticmethod
作为最外层的装饰器来切换装饰器,会发生什么情况?@knbk这很有效!!!!
>>> MyModel.my_method()
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: __call__() takes exactly 2 arguments (1 given)