Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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:使用.\u获取\u删除\u表单和自定义表单集保存_Python_Django_Django Forms - Fatal编程技术网

Python Django:使用.\u获取\u删除\u表单和自定义表单集保存

Python Django:使用.\u获取\u删除\u表单和自定义表单集保存,python,django,django-forms,Python,Django,Django Forms,我试图提供一些自定义表单集处理。用户可以选择删除表单和添加表单。在同一个函数中,我试图删除关联对象并添加新对象。这是我正在处理的代码的一个示例: def addCategories(movie, category_formset): if category_formset.deleted_forms: for form in category_formset._get_deleted_forms: obj_to_remove = form.save

我试图提供一些自定义表单集处理。用户可以选择删除表单和添加表单。在同一个函数中,我试图删除关联对象并添加新对象。这是我正在处理的代码的一个示例:

def addCategories(movie, category_formset):
    if category_formset.deleted_forms:
        for form in category_formset._get_deleted_forms:
            obj_to_remove = form.save(commit=False)
            movie.categories.remove(obj_to_remove)
    for form in category_formset:
        if form.cleaned_data.get('name') is not None:
            obj = Category.objects.get_or_create_category(form.cleaned_data.get('name'))
            movie.categories.add(obj)
    movie.save()  
问题是我不认为我在使用。正确地获取、删除表单。它声称类别表单集、获取表单、删除表单是不可编辑的。我不确定这是否会起作用——因为它可能只是在第二个for循环中将删除的对象直接添加回模型中。有什么想法吗

似乎效率不高的解决方法:

def addCategories(recipe, category_formset):

    if category_formset.deleted_forms:
        for form in category_formset:
            if form in category_formset.deleted_forms:
                obj_to_remove = form.save(commit=False)
                recipe.categories.remove(obj_to_remove)
            else:
                if form.cleaned_data.get('name') is not None:
                    obj = Category.objects.get_or_create_category(form.cleaned_data.get('name'))
                    recipe.categories.add(obj)
    else:
        for form in category_formset:
            if form.cleaned_data.get('name') is not None:
                obj = Category.objects.get_or_create_category(form.cleaned_data.get('name'))
                recipe.categories.add(obj) 
    recipe.save()