假设我的项目中有2个Django应用程序:appA,appB。
appA在models.py中包含ModelA,如下所示:
class ModelA(models.Model):
field1 = models.CharField(max_length=254, null=False, blank=False,)
appB在其modesl.py中包含ModelB,如下所示:
from appA.models import modelA
class ModelB(models.Model):
field2 = models.CharField(max_length=254, null=False, blank=False,)
model_A = models.ForeignKey(ModelA, related_name="blahblah")
现在我想向ModelA添加一个@property
函数,该函数将返回将ModelA作为其外键的ModelB的所有实例:
@property
def matching_model_bs(self):
return ModelB.objects.filter(model_A=self)
但要做到这一点,我必须将appB.models导入appA.models,但这会导致循环导入。 那么如何在不进入循环导入的情况下实现这一目标呢?
答案 0 :(得分:4)
不需要那个属性。该功能已经内置:您只需执行mymodelA.modelb_set.all()
。
(实际上,由于您在此处设置了related_name,因此它将是mymodelA.blahblah.all()
。)
请参阅following relations backward上的文档。