python - "save() got an unexpected keyword argument ' 在功能 View 中提交 '"错误

标签 python django view save

我在功能 View 中遇到此错误: save() 收到意外的关键字参数“commit” 我试图在数据库中保存一个对象。 “debtors”是 models.py 中的多对多字段。

forms.py

class ExpenseForm(forms.ModelForm):
    class Meta:
        model = Expense
        fields = ('amount', 'text', 'debtors', 'date', 'time',)  
        
        widgets = {
            'date': AdminDateWidget(),
            'time': AdminTimeWidget(),
            'debtors': forms.CheckboxSelectMultiple(),
        }

views.py

def expenseformview(request, pk):
    if request.method == 'POST':
        form = Expense.objects.create(
            expenser = request.user,
            amount = request.POST.get('amount'),
            text = request.POST.get('text'),
            date = request.POST.get('date'),
            time = request.POST.get('time'),
        )
        form.debtors.add(request.POST.get('debtors'))  
                  
        formcoseshare = form.save(commit=False)
        formcoseshare.save()
        form.save_m2m()
        

        return redirect('expense_detail', pk=pk, expenseid=form.id)
    

    else:
        form = ExpenseForm()
        return render(request, 'financials/expense_form.html', {'form': form})

如何解决这个问题?

最佳答案

您的form不是一个ExpenseForm,它是一个模型对象Expense,因此commit=False使得没有意义,.save_m2m() 也没有:

from django.contrib.auth.decorators import login_required


@login_required
def expenseformview(request, pk):
    if request.method == 'POST':
        form = ExpenseForm(request.POST, request.FILES)
        if form.is_valid():
            form.instance.expenser = request.user
            expense = form.save()
            return redirect('expense_detail', pk=pk, expenseid=expense.pk)
    else:
        form = ExpenseForm()
    return render(request, 'financials/expense_form.html', {'form': form})

但是我不清楚 pk 在这里做什么:你没有以任何方式使用它。


Note: You can limit views to a view to authenticated users with the @login_required decorator [Django-doc].

关于python - "save() got an unexpected keyword argument ' 在功能 View 中提交 '"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74416186/

相关文章:

c++ - Qt Creator,全屏 View

python - Pandas:在单独的列中显示嵌套字典值

python - 使用 ConfigParser 存储和检索元组列表

python - RabbitMQ python 库检查状态

javascript - Django:我可以将 "action="和 jQuery 分配给同一个表单吗?

javascript - jquery 隐藏的 div 删除需要的字段

https 设置后的 Django 站点 ERR_SSL_PROTOCOL_ERROR

asp.net-mvc - 如何使用 asp.net MVC razor 将两个模型组合成一个模型并将其传递给 View

Android动画 View mask 从上到下

python - 为什么这个集合理解不起作用?