您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django内嵌表单集的初始数据

Django内嵌表单集的初始数据

我的第一个建议是采用一种简单的方法:保存RecipeRecipeIngredient,然后Recipe在制作时将结果用作您的实例FormSet。您可能想在配方中添加一个“已审核”布尔字段,以指示表单集是否随后被用户批准。

但是,如果您出于某种原因不想走这条路,则应该能够像这样填充表单集:

我们假设您已将文本数据解析为配方成分,并具有像这样的字典列表:

recipe_ingredients = [
    {
        'ingredient': 2,
        'quantity': 7,
        'unit': 1
    },
    {
        'ingredient': 3,
        'quantity': 5,
        'unit': 2
    },
]

“成分”和“单位”字段中的数字是各个成分和度量对象的主键值。我认为您已经制定了某种方法来将文本与数据库中的成分匹配,或创建新的成分。

然后,您可以执行以下操作:

RecipeFormset = inlineformset_factory(
    Recipe,
    RecipeIngredient,
    extra=len(recipe_ingredients),
    can_delete=False)
formset = RecipeFormset()

for subform, data in zip(formset.forms, recipe_ingredients):
    subform.initial = data

return render_to_response('recipes/form_recipe.html', {
     'form': form,
     'formset': formset,
     })

initial会将表单集中每个表单的属性设置为recipe_ingredients列表中的字典。在显示表单集方面,这似乎对我有用,但是我还没有尝试保存。

Go 2022/1/1 18:41:40 有352人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶