2014-12-20 24 views
0

假設我的項目中有2個Django應用程序:appA,appB。如何防止這些Django模型中的循環引用?

的appA包含MODELA在其models.py如下:

class ModelA(models.Model): 
    field1 = models.CharField(max_length=254, null=False, blank=False,) 

appB的包含ModelB在其modesl.py如下:

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") 

現在我想的@property功能添加到ModelA將返回ModelA的所有實例,並將此ModelA作爲其外鍵:

@property 
def matching_model_bs(self): 
    return ModelB.objects.filter(model_A=self) 

但是爲了做到這一點,我必須將appB.models導入到appA.models中,但這會導致循環導入。 那麼我怎樣才能達到這一點,而不會陷入循環進口?

回答

4

有沒有需要該屬性。該功能已經內置:您可以執行mymodelA.modelb_set.all()

(實際上,因爲你已經在這裏設置related_name,這將是mymodelA.blahblah.all()

參見following relations backward的文檔。