Подтвердить что ты не робот

Джанго-модель: как ссылаться на себя?

Предположим, что мы имеем класс Employee. Я хочу иметь поле, которое ссылается на другой экземпляр того же класса.

Как это написать? Как насчет следующего кода?

ref_employee= models.ForeignKey('self',null=True,blank=True)
4b9b3361

Ответ 1

http://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

Чтобы создать рекурсивное отношение - объект, который имеет много-к-одному отношения с самим собой - используйте models.ForeignKey('self').

Итак, у вас все в порядке. Обычно быстрее определить, будет ли код делать то, что вы хотите, запустив его:)

Ответ 2

Я считаю, что вы даже можете исключить имя приложения, которое будет выглядеть следующим образом:

ref_employee= models.ForeignKey('Employee',null=True,blank=True)

Ответ 3

Вы можете ссылаться на другие модели по имени (используя строку, включая пакет), а не непосредственно классом:

Итак, если ваш Employee класс находится в hr приложении:

class Employee(models.model):
   other_employee = models.ForeignKey('hr.models.Employee', null=True, blank=True)

Ответ 4

Принудительное принуждение id и ref_employee_id к отдельным значениям выходит за рамки Django ORM. Вам нужно будет добавить указанное ограничение на уровне базы данных, используя SQL в syncdb или вручную.