Django モデルの 1 つにカスタム メソッドがあり、定期的な DB データのフェッチと集計を行います。はい、これ:
from django.utils.timezone import utc, now
...
class Project(models.Model):
...
def getTotalMonthlyBackers(self, monthdate=now()):
from pledger.models import DonationHistory
return (DonationHistory.objects
.filter(project=self)
.filter(datetime_sent__gte=datetime(monthdate.year, monthdate.month, 1))
.aggregate(Count('user', distinct=True))['user__count'])
メソッドを呼び出そうとすると
print project.getTotalMonthlyBackers()
エラーが発生します:'NoneType' object is not callable
ただし、タイプミスではないかどうかを確認するためだけにメソッド自体を出力すると、次のようになります。
print project.getTotalMonthlyBackers
私は得る:<bound method Project.getTotalMonthlyBackers of <Project: Putty>>
したがって、メソッドはそこにあり、特定のProject
オブジェクトにバインドされています。Python には、このメソッドの呼び出しについて理解できない非常に明白なことがありますが、マニュアルからは理解できませんでした。
トレースバック:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/mnt/hgfs/Projects/BitFund/Sources/source/project/views/project_view_details.py" in view
101. print project.getTotalMonthlyBackers()
File "/mnt/hgfs/Projects/BitFund/Sources/source/project/models.py" in getTotalMonthlyBackers
76. .filter(datetime_sent__gte=datetime(monthdate.year, monthdate.month, 1))
Exception Type: TypeError at /putty_1
Exception Value: 'NoneType' object is not callable