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, именно тогда, когда я на странице создания проект добавляю категорию. Т.е. если категория уже существует и я выберу ее из списка для добавления к проекту, все будет ок. Но если добавить категорию в проекте, тогда вылетает такая ошибка.

Вернуться на верх