2009-04-13 3 views
1

Каков наилучший способ иметь много записей детей, указывающих на одну родительскую запись в той же модели/таблице в Django?Python/Django Modeling Question

Является ли эта реализация правильно ?:

class TABLE(models.Model): 
    id = models.AutoField(primary_key=True) 
    parent = models.ForeignKey("TABLE", unique=False) 
+3

Если мне что-то не хватает, вам не нужно поле id, которое будет автоматически сгенерировано для вас автоматически в качестве поля с автоматическим приращением первичного ключа. –

+2

Кроме того, значением по умолчанию уникальным является False, поэтому вам не нужно, чтобы –

ответ

10

Django имеет специальный синтаксис для ForeignKey для Самосоединения:

class TABLE(models.Model): 
    id = models.AutoField(primary_key=True) 
    parent = models.ForeignKey('self') 

Source (второй абзац)

2

две вещи:

Во-первых, вам нужно разрешить возможность нулевого значения fo r parent, иначе ваше дерево TABLE может не иметь корня.

Во-вторых, вам нужно беспокоиться о возможности «Я мой дедушка». Для оживленного обсуждения см. here.

 Смежные вопросы

  • Нет связанных вопросов^_^