Я пытаюсь создать модель со многими и многими отношениями с самим собой, и это отношение также будет иметь определенную таблицу, в которой будет храниться некоторая информация об отношениях, но я В некоторых проблемах.Почему многие для многих отношений с самим собой не могут быть симметричными
Я попытался сделать много разных отношений с различными моделями, например, Django docs, и он отлично работает в какой-то другой точке моего приложения. Но теперь я попытался сделать что-то вроде этого:
Предположим, что я хочу модель, представляющую объект (называемый Item), который создается другими элементами, а также используется для создания некоторых других элементов. Например, объект Дверь сделан деревом и замком, но Дверь также будет использоваться для создания Дома. Я думал, что в чем-то, как это для моих моделей
class Item(models.Model):
name = models.CharField(max_length=100)
items = models.ManyToManyField("self",through='IsMadeBy')
class IsMadeBy(models.Model):
itemResult = models.ForeignKey('Item', related_name='itemResult')
itemPart = models.ForeignKey('Item', related_name='itemPart')
amountUsed = models.PositiveIntegerField()
Я получаю сообщение об ошибке:
Many-to-many fields with intermediate tables must not be symmetrical.
Итак, добавив аргумент
symmetrical=False
в моих отношениях останавливает ошибка.
С учетом сказанного, я хочу знать, как это действительно работает под капотом. Что же означает, что симметричное означает в этом контексте уровень базы данных? Я был бы признателен, если бы кто-нибудь мог привести примеры, возможно, используя SQL-заявления, так как сейчас мой мозг не может видеть общую ситуацию и действительно изучать эту концепцию симметричных отношений во многих отношениях с самим собой.