Связь между двумя строками одной таблицы Django

У меня есть модель Task


                                                                                                    
name = models.CharField(max_length=63, name="name", help_text="Название")                        
description = models.TextField(max_length=255, name="description", help_text="Описание")                                                                         
                                                                                                 
calendar = models.ForeignKey(Calendar, on_delete=models.CASCADE)                                 
author = models.CharField(max_length=63, name='author', help_text='Автор', default="Anonymous")  
date_time = models.DateTimeField(name="date_time")                                               
inheritanced  = models.ForeignKey(Task, on_delete=models.CASCADE)                                                           
                                                                                                                                                                                                                                                              

Так же две задачи могут наследоваться друг из друга, поэтому я должен сохранить id той задачи из которой эта наследуется (так же там может null). Но код приведенный сверху не работает, так как:

  • Он не может принимать значение null
  • В строчке models.ForeignKey(Task, on_delete=models.CASCADE) есть ошибка, так как класс Task еще не определен (Unresolved reference 'Task' )

Ответы (1 шт):

Автор решения: fsd amp
inheritanced = models.ForeignKey('self', releared_name='children', on_delete=models.CASCADE, null=True, blank=True)

В таком случае ты сможешь обращаться как к корневым объектам, так и вложенным. Но я советую использовать библиотеку django-mptt

→ Ссылка