2011-02-06 19 views

Odpowiedz

44

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

Aby utworzyć rekurencyjne rel ationation - obiekt, który ma relację wiele do jednego z samym sobą - użyj models.ForeignKey('self').

Więc masz rację. Zwykle szybciej jest ustalić, czy kod zrobi to, co chcesz, uruchamiając go :)

+1

Dzięki za odpowiedź. Ponadto, ponieważ coś wydaje się działać, nie oznacza to, że dobrze jest to zrobić w ten sposób. Lepiej znaleźć właściwą drogę i uczyć się na doświadczeniach i błędach innych osób. – dsjoerg

2

Można odwołać innych modeli nazwy (za pomocą znaków, w tym pakietu) zamiast przez klasę bezpośrednio:

Dlatego, jeśli klasa Employee jest w hr aplikacji:

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

znalazłem, że odniesienie potrzebne opuścić częściowego „modeli” z modelu odniesienia (tj 'models.ForeignKey ('hr.Employee', null = True, puste = True) ') – CoatedMoose

0

Przymus zmuszający id i ref_employee_id do oddzielnych wartości wykracza poza zakres ORM Django. Będziesz musiał dodać wspomniane ograniczenie na poziomie bazy danych, poprzez SQL w syncdb lub ręcznie.

2

Wierzę, że można nawet wykluczyć nazwę aplikacji, która będzie wyglądać następująco:.

ref_employee= models.ForeignKey('Employee',null=True,blank=True) 
Powiązane problemy