【问题标题】:save() got an unexpected keyword argument 'force_insert'save() 得到了一个意外的关键字参数“force_insert”
【发布时间】:2020-05-16 11:58:31
【问题描述】:
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm
from django.contrib.auth.decorators import login_required

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()         
            messages.success(request, f'Your account has been created. Log In to continue.')
            return redirect('login')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html', {'form': form})

这是我运行时遇到的错误代码。但是该错误不应该存在,因为我没有覆盖 save() 方法。请帮忙。

【问题讨论】:

  • 你能出示你的UserRegisterForm吗?

标签: django


【解决方案1】:

尝试逐一输入每个表单,然后保存表单。例如:

if request.method == 'POST':
    form = UserRegisterForm(request.POST)
    if form.is_valid():
        data = YourModelName()
        data.input1 = form.cleaned_data['input1']
        data.input2 = form.cleaned_data['input2']
        # ... 
        form.save()         
        messages.success(request, 'Your account created. You can now Login.')
        return redirect('login')
else:
    form = UserRegisterForm()
return render(request, 'users/register.html', {'form': form})

【讨论】:

  • 为什么? OP 有一个表格,为什么 OP 需要这样做?
  • 根据我的经验,有时这样做会更好
【解决方案2】:

我感觉你在做 Corey Schafer 的 Django 教程。如果是这样,其他用户也有同样的问题,这里讨论:

Django - TypeError - save() got an unexpected keyword argument 'force_insert'

问题在于覆盖 Profile 模型中的保存方法

【讨论】:

    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多