使用成分、食谱和组件组织 django 食谱应用程序模型的最佳方式

Posted

技术标签:

【中文标题】使用成分、食谱和组件组织 django 食谱应用程序模型的最佳方式【英文标题】:Best way to organize models for django Recipe app with ingredients, recipes, and components 【发布时间】:2020-08-20 10:51:46 【问题描述】:

希望获得有关如何构建帮助厨师制作食谱的新应用(学习项目)的反馈。

配方是特定数量的成分(例如:1c 糖)和/或成分(一小部分成分。例如:简单糖浆,这是一种1c糖+1c水的配方。

对于我的模型,这是我的想法:

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 模型中并使用该OR 成分。但只是猜测。有没有人建议更好的方法来做到这一点?

【问题讨论】:

【参考方案1】:

这看起来有点复杂。你确定厨师真的想用这种方式定义成分和数量吗?

我会从这样简单的事情开始:

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. 

【讨论】:

是的,我正在和一位厨师一起工作,他们 100% 都希望数据结构化。

以上是关于使用成分、食谱和组件组织 django 食谱应用程序模型的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

具有这些成分的 SQL 查询食谱)但不是这些成分)

react-redux:在 API 调用后渲染组件

使用 CoreData 存储

多对多查询 查找所有含有 XX 成分的“食谱”

Ruby On Rails 5,activerecord query其中模型关联id包括数组中的所有id

如何在 Rails 4.2 中为多对多关联创建表单