Как можно создать отношения вроде этого:Таблица Django со специфическим отношением к двум или нескольким другим таблицам
Представьте себе ресторан. Среди их данных - один для рецептов и один для ингредиентов. И есть еще один, который содержит такие категории продуктов, как обед, обед, завтрак, десерт, суп. Назовем его cat_food.
Повар хочет сортировать рецепты и ингредиенты с помощью cat_food. Например, существует отношение «ManyToOne» от рецептов к cat_food среди всех остальных столбцов. Таким образом, у одного рецепта есть одна категория, а одна категория - несколько рецептов.
Но повар также хочет сортировать ингредиенты таким образом. Здесь у нас были бы отношения «ManyToMany», в то время как мы можем использовать один ингредиент в рецепте десерта, как и в рецепте обеда или супа.
Одним из решений может быть создание таблицы cat_food для рецептов и ингредиентов для собственных нужд. Но как можно создать таблицу cat_food, в которой хранятся либо рецепты, либо ингредиенты? (Зависит от того, что дано)
Моя мысль состоит в том, чтобы использовать промежуточную модель и установить оба «foreignKeys» с опциями поля «blank = True 'и' null = True '. Но я не доволен этим. Возможно ли, что это может вызвать некоторые проблемы с базой данных в долгосрочной перспективе? Есть ли более элегантный способ справиться с такой ситуацией?
Мне нравится идея, но ... Я хочу сделать ее как можно менее избыточной. Я имею в виду, если есть новый элемент для cat_food, тогда я просто хочу разместить его там, чтобы иметь его как новый вариант в рецептах или ингредиентах. Хорошо, здесь мой пример немного на краю, потому что трудно создать новую категорию продуктов ... Скажем, новый - это астронавт-ужин ... Теперь, когда я добавляю новый рецепт или ингредиент, я хочу иметь выпадающего меню со всеми возможными элементами cat_food. И я хочу использовать как можно меньше столбцов. –
Это имеет смысл, может быть, вы можете создать третий тип контента? Я думаю, вы можете импортировать тип контента, который вы создаете отдельно. Многочисленные отношения могут также работать, я использовал их раньше, и они довольно полезны. Попробуйте эту ссылку, чтобы узнать, будет ли это работать. https://docs.djangoproject.com/en/1.9/topics/db/examples/many_to_many/ – overstreetce
Моя проблема заключается в том, что две таблицы общаются с тем же, что и кошачья еда. При этом у меня есть столбец для рецептов и ингредиентов в cat_food. Когда один дается, другой пуст.Я мог бы справиться с этим через «blank = True» и «null = True», я думаю. Но я не совсем уверен в дальнейшем устранении неполадок. –