Определите модели Django для рецепта

Итак, мне нужна помощь в разработке моделей для моего проекта. Проект довольно прост, это производитель коктейлей. Идея состоит в том, чтобы иметь модель для всех ингредиентов (водка, кола, джин и т.д.), другую модель для коктейля и последнюю модель с рецептом. Как я могу добавить некоторые ингредиенты и выбрать их количество в модель рецепта, а затем связать рецепт с моделью коктейля?

Вот что я имею на данный момент, модель ингредиентов работает хорошо, но я пытаюсь разработать модель коктейлей и рецептов и выбрать их взаимосвязь.

class Ingredient(models.Model):


    name = models.CharField(null=False, blank=False, unique=True,
                        max_length=100, validators=[MinLengthValidator(3)])

    price = models.FloatField(null=False, blank=False)

    is_alcoholic = models.BooleanField(null=False, blank=False)


class Cocktail(models.Model):
    name = models.CharField(max_length=50)
    price = models.FloatField()
    description = models.TextField()
    recipe = models.ForeignKey('Recipe', on_delete=models.CASCADE)


class Recipe(models.Model):
    ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE)
    quantity = models.IntegerField()

Любые предложения более чем приветствуются!

Ок, я думаю, что Cocktail и Ingredient были бы отличным местом для использования ManyToManyField, предлагаемого Django, вместо обычного ForeignKey. Но вам придется иметь дело с количеством - поскольку оно меняется от коктейля к коктейлю. Поэтому вам нужно будет использовать пользовательскую "сквозную" модель. Для этого подойдет модель Recipe, но вам придется добавить в модель Recipe еще одно поле ForeignKey, относящееся к самому коктейлю. Таким образом, у вас будет модель Recipe, которая имеет множество отношений к коктейлю, а также множество отношений к ингредиентам. Но для одного коктейля она имеет n-ное количество отношений, где n=количество ингредиентов. И количество можно регулировать, скажем так, по вкусу :)

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