【发布时间】:2015-09-02 22:34:04
【问题描述】:
这是我的两个 Django 模型,MyModelB 有一个指向 MyModelA 的外键:
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'
>>>
【问题讨论】:
标签: python django orm foreign-keys