假设我有3个Django模型:
mymodela / models.py:
class MyModelA(models.Model):
my_int = models.IntegerField()
created_ts = models.DateTimeField()
mymodelb / models.py:
from mymodela.models import mymodela
class MyModelB(models.Model):
my_int = models.IntegerField()
my_a = models.ForeignKey(MyModelA, related_name="MyModelB_a")
created_ts = models.DateTimeField()
mymodelc / models.py:
from mymodelb.models import MyModelB
class MyModelC(models.Model):
my_int = models.IntegerField()
my_b = models.ForeignKey(MyModelB, related_name="MyModelC_b")
created_ts = models.DateTimeField()
我有一个名为MyModelA
的{{1}}实例。我想计算这个QuerySet:
a
但是,我需要在MyModelC.objects.filter(my_b__my_a=a).latest("created_ts")
的方法中计算此查询集。由于a
不导入MyModelA
,因此我无法直接执行此操作。我需要按照反向链接。但是,如何按两次反向链接来获得我需要的东西呢?
答案 0 :(得分:1)
在mymodela/models.py
中(顺便说一下,我不确定为什么你将所有模型分成这样的单独目录 - 除非这是故意的,否则你可以考虑将它们全部放在你的应用程序中#39 ; s models.py
文件):
class MyModelA(models.Model):
my_int = models.IntegerField()
created_ts = models.DateTimeField()
# A method that will fetch the most recent related MyModelC
def get_latest_c(self):
from mymodelc.models import MyModelC
return MyModelC.objects.filter(my_b__my_a=self).latest("created_ts")
现在,当您有MyModelA
名为a
的实例时,请致电a.get_latest_c()
以获取最新的相关MyModelC
对象。