Ошибка в Python Django при попытке сохранить пользователя вручную - PullRequest
2 голосов
/ 19 марта 2019

Я экспериментирую с некоторой ошибкой, когда пытаюсь создать нового пользователя вручную в 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'

Я действительно не могу понять, в чем проблема

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Я решил свою проблему, добавив этот код

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

Я взял идею этого поста Django - TypeError - save () получил неожиданный аргумент ключевого слова '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.

0 голосов
/ 20 марта 2019

Используйте этого пользователя вместо

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

...