【发布时间】:2019-04-19 19:54:57
【问题描述】:
我正在编写我的第一个 Django 应用程序,我的 models.py 文件中有两个类,成分和膳食。一种食物有很多成分,你应该能够设置餐中每种成分的数量,这就是我的models.py:
class Ingredient(models.Model):
name = models.CharField(max_length=200)
class Meal(models.Model):
name = models.CharField(max_length=200)
ingredients = models.ManyToManyField(Ingredient, through='Recipe_Ingredient')
class Recipe_Ingredient(models.Model):
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE)
quantity = models.FloatField()
UNITY_CHOICES = (
('g', 'Gram(s)'),
('kg', 'Kilogram(s)'),
('l', 'Liter(s)'),
('cl', 'Centiliter(s)'),
)
quantityUnit = models.CharField(
max_length=2,
choices=UNITY_CHOICES,
default='g',
)
Recipe_Ingrent 类是用于存储数量的 ManyToMany 关联表。
这里的问题是我不知道在这种情况下如何使用表单。我有一个模板meal_edit.html,它在form.py 中调用一个django 表单。
要添加成分,我的表单很简单,如下所示:
from .models import Ingredient
class IngridientForm(forms.ModelForm):
class Meta:
model = Ingredient
fields = ('name',)
那么,我应该如何制作一个表格来创建包含多种成分和每种成分数量的食谱?
【问题讨论】:
-
您考虑过使用表单集吗?
-
嗨@Bott0610,这是我的第一个django项目,我不知道formset,但我读到它用于在同一页面上处理多个表单。我相信在我的情况下,我的页面上只需要一个表单,所以 formset 不会有太大帮助,如果我错了,请纠正我。谢谢。
-
在views.py中为您的模型创建一个UpdateView,您可以使用表单类并指定您的表单,或者您也可以创建表单的实例并将其传递给您的context_data中的模板并激活它使用 form.as_p
-
嗨@TheodoreHowell,我正在使用form.as_p从成分表中进行操作,我的问题是如何编写表单以创建具有多种成分且每种成分都与数量相关联的餐点。跨度>