0
這是我的兩個Django模型,MyModelB
有一個外鍵MyModelA
:如何從Django模型「後向鏈接」調用靜態方法?
from django.db import models
class MyModelA(models.Model):
my_int = models.IntegerField()
def __str__(self):
return "MyModelA #%s: my_int=%s" % (
self.pk,
self.my_int,
)
class MyModelB(models.Model):
my_int = models.IntegerField()
my_a = models.ForeignKey(MyModelA, related_name="MyModelB_a")
def __str__(self):
return "MyModelB #%s: my_int=%s" % (
self.pk,
self.my_int,
)
@staticmethod
def my_static_method():
return "Hello"
我創建的MyModelA
和MyModelB
一個實例:
>>> a = MyModelA(my_int=20)
>>> a.save()
>>> a
<MyModelA: MyModelA #3: my_int=20>
>>> b = MyModelB(my_int=30, my_a=a)
>>> b.save()
>>> b
<MyModelB: MyModelB #3: my_int=30>
從MyModelA
實例,我可以引用使用「反向鏈接」的MyModelB
:
>>> a.MyModelB_a.filter(my_int=30)
[<MyModelB: MyModelB #3: my_int=30>]
但我想從MyModelA
的實例中調用MyModelB.my_static_method()
。我該怎麼做?我的嘗試解決方案不起作用:
>>> a.MyModelB_a.my_static_method()
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'RelatedManager' object has no attribute 'my_static_method'
>>>