Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Django 类型错误:save()获取了意外的关键字参数';强制插入';_Django_Django Models_Django Views - Fatal编程技术网

Django 类型错误:save()获取了意外的关键字参数';强制插入';

Django 类型错误:save()获取了意外的关键字参数';强制插入';,django,django-models,django-views,Django,Django Models,Django Views,我在尝试注册新用户时出现此错误: ... File "/home/django/django_project/accounts/views.py" in form_valid 34. new_user = User.objects.create(username=username, email=email) File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager

我在尝试注册新用户时出现此错误:

...
File "/home/django/django_project/accounts/views.py" in form_valid
  34.         new_user = User.objects.create(username=username, email=email)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py" in manager_method
  85.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in create
  394.         obj.save(force_insert=True, using=self.db)

File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/base_user.py" in save
  80.         super(AbstractBaseUser, self).save(*args, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save
  808.                        force_update=force_update, update_fields=update_fields)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save_base
  848.                 update_fields=update_fields, raw=raw, using=using,

File "/usr/local/lib/python2.7/dist-packages/django/dispatch/dispatcher.py" in send
  193.             for receiver in self._live_receivers(sender)

File "/home/django/django_project/accounts/models.py" in post_save_user_receiver
  150.         new_profile = UserProfile.objects.get_or_create(user=instance)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py" in manager_method
  85.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in get_or_create
  466.             return self._create_object_from_params(lookup, params)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in _create_object_from_params
  500.                 obj = self.create(**params)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in create
  394.         obj.save(force_insert=True, using=self.db)

Exception Type: TypeError at /register/
Exception Value: save() got an unexpected keyword argument 'force_insert'

以下是参与此错误的模型和视图:

accounts/models.py accounts/views.py 有什么提示吗?

模型的需要一些额外的可选参数。事实上,签名是:

Model.save(强制插入=False,强制更新=False,使用=DEFAULT\u DB\u别名,更新字段=None)

如果要自定义保存行为,可以覆盖此
save()
方法。看见 更多细节

因此,如果覆盖
save(..)
函数,最好尊重签名。您不必自己指定这些参数,但可以使用
*args
**kwargs
将位置参数和命名参数传递给基础
保存方法:

class UserProfile(models.Model):

    # ...

    def save(self, *args, **kwargs):
        super(UserProfile,self).save(*args, **kwargs)
        if self.image:
            img = Image.open(self.image.path)
            if img.height > 300 or img.width > 300:
                output_size = (300, 300)
                img.thumbnail(output_size)
                img.save(self.image.path)
类用户配置文件(models.Model):
# ...
def保存(自身、*args、**kwargs):
super(UserProfile,self).save(*args,**kwargs)
如果自我形象:
img=Image.open(self.Image.path)
如果img.height>300或img.width>300:
输出_大小=(300300)
图像缩略图(输出大小)

img.save(self.image.path)
谢谢,现在我得到一个错误,没有与注册相关的图像,因为这是每次检查图像,但不应该是在用户首次注册时。因此,我尝试在保存图像之前添加一个if语句来检查图像是否存在,但它会抛出相同的错误。添加到top@PyPax:如果改为检查self.image
,该怎么办?
class UserRegisterView(FormView):
    template_name = 'accounts/user_register_form.html'
    form_class = UserRegisterForm
    success_url = '/login'

    def form_valid(self, form):
        username = form.cleaned_data.get("username")
        email = form.cleaned_data.get("email")
        password = form.cleaned_data.get("password")
        new_user = User.objects.create(username=username, email=email)
        new_user.set_password(password)
        new_user.save()
        messages.info(self.request, 'Welcome')
        return super(UserRegisterView, self).form_valid(form)


def profile_view(request):
    if request.method == 'POST':
        p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
        if p_form.is_valid():
            p_form.save()
            messages.info(request, 'Saved')
            return redirect('/')
    else:
        p_form = ProfileUpdateForm() #instance=request.user.profile

    context = {
        'p_form' : p_form,
    }
    return render(request,'accounts/userprofile.html',context)
class UserProfile(models.Model):

    # ...

    def save(self, *args, **kwargs):
        super(UserProfile,self).save(*args, **kwargs)
        if self.image:
            img = Image.open(self.image.path)
            if img.height > 300 or img.width > 300:
                output_size = (300, 300)
                img.thumbnail(output_size)
                img.save(self.image.path)