Django ORM | FOREIGN KEY constraint failed при связи m2m
Есть две модели: Project и Category.
Модель Project:
class Project(models.Model):
# some code...
categories = models.ManyToManyField(
'Category',
verbose_name='Категории',
related_name='projects',
related_query_name='project',
symmetrical=True,
)
# some code...
class Meta:
verbose_name = 'Проект'
verbose_name_plural = 'Проекты'
def __str__(self) -> str:
return str(self.name)
Модель Category:
class Category(models.Model):
name = models.TextField(verbose_name='Название категории')
class Meta:
verbose_name = 'Категория'
verbose_name_plural = 'Категории'
def __str__(self) -> str:
return str(self.name)
Проблема: при добавлении нового проекта возникает ошибка django.db.utils.IntegrityError: FOREIGN KEY constraint failed
.
Методом последовательного приближения к цели (методом тыка) я понял, что все дело в параметре symmetrical=True у поля categories в модели Project. Когда я его убрал, все проекты стали добавляться как надо.
Мне нужен этот флаг, т.к. логично, что если связать проект с какой-то категорией, то и у этой категории в списке проектов, связанных с ней, должен появляться этот проект. Но как это сделать?
P.S. Дополнение. Ошибка возникает при добавлении проекта через админку Django, именно тогда, когда я на странице создания проект добавляю категорию. Т.е. если категория уже существует и я выберу ее из списка для добавления к проекту, все будет ок. Но если добавить категорию в проекте, тогда вылетает такая ошибка.