Python 如何在Django中编辑内联表单集中的模型对象
在Django中,我尝试使用内联表单集工厂,以便用户可以通过foreignkey编辑与父模型相关的模型实例。由于某些原因,我尝试的方法没有保存我在单击“提交”时所做的更改 我的观点如下(不包括渲染): 我将在模板中的表单集中显示每个表单,以便用户可以单独编辑实例:Python 如何在Django中编辑内联表单集中的模型对象,python,django,django-forms,backend,formset,Python,Django,Django Forms,Backend,Formset,在Django中,我尝试使用内联表单集工厂,以便用户可以通过foreignkey编辑与父模型相关的模型实例。由于某些原因,我尝试的方法没有保存我在单击“提交”时所做的更改 我的观点如下(不包括渲染): 我将在模板中的表单集中显示每个表单,以便用户可以单独编辑实例: <form method="post">{% csrf_token %} {{ formset.management_form}} <table>
<form method="post">{% csrf_token %}
{{ formset.management_form}}
<table>
{% for form in formset %}
{{ form }}
{% endfor %}
</table>
<button type="submit" class="save btn btn-default">Save set</button>
</form>
这使我能够单独保存表单集中的每个表单,因为我只修改表单集的一部分 你的代码对我有用。可能您已经更改了环境设置或其他内容。当您提交表格时,是否有任何错误显示给您?如果是,请向我们显示您的错误详细信息 您可以这样尝试:
def edit_sets(request, exercisegroup_id):
exercisename = ExerciseName.objects.get(pk=exercisegroup_id)
SetLoggerFormSet = inlineformset_factory(ExerciseName, SetLogger, fields=('weight','reps',))
formset = SetLoggerFormSet(instance=exercisename)
if request.method == 'POST':
formset = SetLoggerFormSet(request.POST, instance=exercisename)
if formset.is_valid():
formset.save()
else:
print("something is wrong in validation")
print(formset.errors)
formset = SetLoggerFormSet(instance=exercisename)
是的,我在表单集中输入的任何内容都被认为是无效的。考虑到这些字段只是简单的整数字段,这似乎很奇怪。也许这与我在表单集中编辑单个表单有关,而不是整个表单集本身?不,我不这么认为
formset。错误将返回所有相关表单错误。为了找出解决方案,我试图保存整个表单集,而我本应该单独保存每个表单。谢谢你的帮助嘿,你能帮我看看吗?我正在尝试编辑一个表单集,但未能呈现编辑表单
if request.method == 'POST':
formset = SetsFormSet(request.POST, instance=exercisename)
for form in formset:
if form.is_valid():
form.save()
def edit_sets(request, exercisegroup_id):
exercisename = ExerciseName.objects.get(pk=exercisegroup_id)
SetLoggerFormSet = inlineformset_factory(ExerciseName, SetLogger, fields=('weight','reps',))
formset = SetLoggerFormSet(instance=exercisename)
if request.method == 'POST':
formset = SetLoggerFormSet(request.POST, instance=exercisename)
if formset.is_valid():
formset.save()
else:
print("something is wrong in validation")
print(formset.errors)
formset = SetLoggerFormSet(instance=exercisename)