Ответ 1
class Task(models.Model):
title = models.CharField()
relates_to = models.ForeignKey('self')
https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey
Предположим, что у меня есть эта модель:
class Task(models.Model):
title = models.CharField()
Теперь мне хотелось бы, чтобы задача могла быть связана с другой задачей. Поэтому я хотел сделать это:
class Task(models.Model):
title = models.CharField()
relates_to = ForeignKey(Task)
однако у меня есть ошибка, в которой указано, что задание задано. Является ли это "законным", если нет, как мне сделать что-то подобное этому?
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'