在Django中指定单位

时间:2013-08-09 18:55:48

标签: django django-models foreign-keys many-to-many

我正在创建一个小应用程序,它基本上计算食谱中的卡路里。我很想知道是否有更好的方法来做到这一点。每个食谱都有成分。每种成分都有一定的量,重量和卡路里含量。

例如:

  • 食谱:无面粉的Nutella蛋糕
    • 成分:鸡蛋
      • 金额:4
      • 重量:大蛋(可能是杯子或盎司或其他)
      • 卡路里:312(主要根据金额*重量计算)
    • 成分:花生酱
      • 金额:8.5
      • 重量:盎司
      • 卡路里:850

这是models.py:

  来自FoodList.models的

导入食物,重量

     

类成分(models.Model):

     
    

food = models.ForeignKey(Food)
       weight = models.ForeignKey(Weight)
       amount = models.FloatField(默认值= 1.0)

         

...

  
     

class Recipe(models.Model):

     
    

成分= models.ManyToManyField(成分,空白=真,空=真)

         

...

  

问题在于每次我想用不同数量的鸡蛋制作新配方时,我首先要制作一种含有正确蛋量的新配料。所以我有一种成分说“4个大蛋”,另一种成分说“2个大蛋。”

我目前正在管理员中使用内联来查看所有内容,但它看起来仍然相当繁琐,并且可能有更好的方法。

有什么方法可以在配方下做所有事情而不是成分中的中间步骤?

1 个答案:

答案 0 :(得分:0)

从Ingredients模型中删除金额字段,然后创建一个新模型:

class Amount(models.Model):
    units = model.IntegerField(default=1)
    ingredient = models.ForeignKey(Ingredient)
    recipe = models.ForeignKey(Recipe)

只要您将数量与成分模型分开,您就可以将所有成分放入其中,然后使用每个配方的“单位”字段跟踪数量。