2010-10-27 2 views
0

Я хочу создать модель задачи, которая может быть связана с проектными моделями, другой моделью X и другими образцами задач. Очевидным выбором является внешний ключ, но я хочу, чтобы какой-либо конкретный экземпляр этой модели задач связывался только с одним из этих типов моделей, то есть если модель задачи имеет отношение к модели Project, она не может иметь отношения с другой целевой моделью и т. д. Любые советы в отношении того, что было бы лучшим способом представить это? Благодарю.Рекомендации по проектированию модели django с «эксклюзивными» отношениями внешнего ключа

+0

ForeignKey (unique = True) или OneToOneField()? Извините, если я неверно истолковал ваш вопрос. –

+0

Да, но unique = True ограничил бы уникальность отдельного внешнего ключа, как задачи для Project, или задачи для X-модели, но не был бы уникальным для всех моделей внешнего ключа. Один на поле будет одним и тем же, плюс мне нужно, чтобы другие модели имели более одного объекта Task, но отдельные объекты Task должны быть связаны только с одной другой моделью. – user443850

ответ

0

Посмотрите на Generic relation. Он позволяет вам определять внешний ключ на нескольких моделях. Таким образом, ваша задача связана только с одной из ваших моделей.

0

Что я сделал, это наследовать от базового класса на всех моих моделях, которые будут связаны с задачами. Модели задач указывают на этот базовый класс на ForeignKey с уникальным значением = True, и кажется, что все подклассы наследуют отношения. Благодарю.

Смежные вопросы