Я работаю над веб-сервисом в Джанго, и мне нужно смоделировать очень специфические, сложные отношения, которые я просто не могу решить.
Представьте себе три общие модели, назовем их Site, Category и Item. Каждый сайт содержит одну или несколько категорий, но он может относиться к ним одним из двух возможных способов: одна - это «общие» категории, которые имеют отношение «многие ко многим»: они предопределены, и каждый сайт может относиться к нулю или больше категорий, и наоборот. Другие типы категорий индивидуально определены для каждого сайта, и одна такая категория «принадлежит» только этому сайту и никому другому; то есть они находятся в отношениях «многие-к-одному», поскольку у каждого сайта может быть несколько таких категорий.
Внутренне эти два типа категорий полностью идентичны, они отличаются только тем, как они связаны с сайтами. Однако он мог бы разделить их на две разные модели (возможно, с общей родительской моделью), но это решает только половину моей проблемы: модель «Предмет» находится в отношении «многие к одному» с категориями, то есть каждый элемент принадлежит только одна категория, и в идеале должно быть все равно, как она связана с сайтом.
Другим решением было бы позволить сосуществовать двум отдельным типам отношений Site-Category (т. Е. Иметь поля ForeignKey и ManyToMany в одной и той же модели категории), но это решение похоже на открытие совершенно другой банки червей. .
У кого-нибудь есть идея, есть ли третье, лучшее решение для этого тупика?