【问题标题】:Error in python django when trying to save a user manually尝试手动保存用户时 python django 出错
【发布时间】:2019-03-19 20:58:10
【问题描述】:

当我尝试在 django 中手动创建新用户时,我正在尝试一些错误

这是我的代码:

from django.contrib.auth.models import User

newuser = User()
newuser.username = request.data['username']
newuser.first_name = request.data['first_name']
newuser.last_name = request.data['last_name']
newuser.email = request.data['email']
newuser.is_active = True
newuser.set_password(request.data['password'])
newuser.full_clean()
newuser.save()

代码能够正确插入用户,我看到数据库中的更改,但是在保存用户后代码中断

File "/usr/local/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 413, in create
obj.save(force_insert=True, using=self.db)
TypeError: save() got an unexpected keyword argument 'force_insert'

我实在想不通是什么问题

【问题讨论】:

  • 你使用的是什么版本的 django?
  • 嗨,Django 版本 2.1.7,
  • 为什么不使用 User.objects.create() 函数?你可以用你需要的所有数据创建一个字典,然后将它传递给这个函数。
  • @JuanMiGabarron - create() 是 OP 正在使用的完全有效代码的快捷方式。

标签: python django django-models


【解决方案1】:

改用这个用户

from django.contrib.auth import get_user_model
User = get_user_model()

https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#django.contrib.auth.get_user_model

【讨论】:

  • 只有在使用自定义用户模型时才会有所不同。
【解决方案2】:

我解决了添加此代码的问题

args = ()
kwargs = {}
newuser.save(*args,**kwargs)

我接受了这篇文章的想法 Django - TypeError - save() got an unexpected keyword argument 'force_insert'

事实上,我发现我的所有表单也都失败了,例如我的一个表单

class UserRegisterForm(UserCreationForm):


    class Meta:
        model = User
        fields = ['first_name','last_name','username','email','password1','password2']

直到今天失败时都可以正常工作,所以我需要将其更改为

class UserRegisterForm(UserCreationForm):


    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)**

    class Meta:
        model = User
        fields = ['first_name','last_name','username','email','password1','password2']

我不知道这个问题是什么时候开始的,我是说在哪个django版本。

【讨论】:

    猜你喜欢
    • 2017-08-07
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    相关资源
    最近更新 更多