Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中编辑内联表单集中的模型对象_Python_Django_Django Forms_Backend_Formset - Fatal编程技术网

Python 如何在Django中编辑内联表单集中的模型对象

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>

在Django中,我尝试使用内联表单集工厂,以便用户可以通过foreignkey编辑与父模型相关的模型实例。由于某些原因,我尝试的方法没有保存我在单击“提交”时所做的更改

我的观点如下(不包括渲染):

我将在模板中的表单集中显示每个表单,以便用户可以单独编辑实例:

<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)