Лучший способ организовать модели для django рецептов с ингредиентами, рецептами и компонентами - PullRequest
0 голосов
/ 05 мая 2020

Хотел бы получить здесь отзывы о том, как структурировать новое приложение (учебный проект), которое помогает поварам создавать рецепты.

Рецепт - это конкретное c количество ингредиентов (например, : 1 c сахар) и / или компоненты (небольшой набор ингредиентов. Пример: простой сироп, который представляет собой рецепт 1 c сахара + 1 c воды).

Что касается моих моделей, вот что я думаю:

class Ingredient(models.Model):
    name = models.CharField(max_length=150)
    ...


class Recipe(models.Model):
    FULL = 1
    COMPONENT = 2
    TYPE_CHOICES = (
        (FULL, 'Full Recipe'),
        (COMPONENT, 'Component'),
    )

    name = models.CharField(max_length=150)
    type = models.IntegerField(choices=TYPE_CHOICES, default=FULL)
    ...


class RecipeIngredient(models.Model):
    recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
    ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE)
    amount = models.FloatField()
    ...

Моя проблема в том, что я не уверен, как учитывать компонент (подмножество ингредиентов, используемых в нескольких рецептах). Я сделал его Recipe.type, так как это действительно то, что есть, но не знаю, как это учесть в моей модели RecipeIngredient.

Я мог бы добавить component = models.ForeignKey(Recipe) к моей модели RecipeIngredient и используйте любой из ингредиентов ИЛИ. Но только догадываюсь. У кого-нибудь есть предложение, как это сделать лучше?

1 Ответ

0 голосов
/ 05 мая 2020

Это выглядит немного сложно. Вы уверены, что повара действительно хотят определять ингредиенты и количество таким образом?

Я бы начал с чего-нибудь более простого:

class Recipe(models.Model):
    author = models.ForeignKey(to=User, on_delete=models.CASCADE)
    name = models.CharField(max_length=150)
    description = models.TextField() # <-- Ingredients, amounts, etc. 
...