Могу ли я сделать foreignKey для той же модели в django?


Предположим, у меня есть эта модель :

class Task(models.Model):
    title = models.CharField()

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

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey(Task)

однако у меня есть ошибка, которая гласит, что задача определена Примечание. Это "права" , если нет, то как я должен сделать что-то подобное ?

2 53

2 ответа:

class Task(models.Model):
    title = models.CharField()
    relates_to = models.ForeignKey('self')

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

Да, вы можете сделать это, сделать атрибут ForeignKey строкой:

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey('Task')

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

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey('<app_name>.Task')  # e.g. 'auth.User'