我在功能 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/