2017-02-05 3 views
0

У меня есть две моделей Джанго в двух файлах:круговой импорт Предотвратить для связанного объекта

parent.py

from child import Child 
from django.db import models 

def Parent(models.Model): 
    name = models.CharField() 

    def createChild(self): 
     return Child() 

child.py

from parent import Parent 
from django.db import models 

def Child(models.Model): 
    parent = models.ForeignKey(Parent) 

Однако это привело бы к круговому импорту - Есть ли лучший способ организовать это, чтобы предотвратить это?

+0

Что делать, если вы помещаете их в один файл, чтобы избежать цикла импорта? В любом случае, они плотно связаны. – byxor

+0

У меня около 6 таких объектов, поэтому он станет гигантским файлом, содержащим почти весь пакет. – nven

ответ

2

Это явно покрыто in the documentation. Нет необходимости импортировать модель; используйте строку в формате "app_name.ModelName" в качестве цели внешнего ключа.

def Child(models.Model): 
    parent = models.ForeignKey("parent.Parent") 

Обратите внимание, что нет необходимости также ссылаться на ребенка явным образом от родителя. Предположительно, когда вы создаете дочерний элемент из родителя, вы хотите, чтобы он ссылался на родителя; поэтому вы бы сделали self.child_set.create().

+0

Не могли бы вы подробнее рассказать о своем втором комментарии относительно 'self.child_set.create()' – nven