У меня возникла проблема с добавлением нового пользовательского пользователя в базу данных. Я знаю, что в Интернете есть некоторые темы об этом, но я не мог найти решение проблемы. После нажатия кнопки «Отправить» кнопку в регистрационной странице, какой шаблон здесь:PYTHON/DJANGO: «SUser.user» должен быть экземпляром «Пользователь»
{% extends 'strona/Main.html' %}
{% block body %}
< form action="" method="post" enctype="multipart/form-data" >
{% csrf_token %}
{% for field in form %}
{{ field.label_tag }}
</br>
{{ field }}
</br>
</br>
{% endfor %}
< button type="submit" class="btn btn-success">Submit</button >
</form>
{% endblock %}
он продолжает говорить, что: «Невозможно назначить» < SimpleLazyObject: < django.contrib.auth.models.AnonymousUser объект в 0x038B5A70 >>» : «SUser.user» должен быть экземпляром «Пользователь» ».
Источник коды:
VIEWS.PY
class RegPanelView(View):
panel = RegPanel
template_name = 'strona/RegistrationTemp.html'
registration = None
def get(self, request):
form = self.panel(None)
return render(request, self.template_name, {'form': form})
def post(self, request):
# form = self.panel(data=request.POST)
form = self.panel(request.POST)
if form.is_valid():
# user = form.save(commit=False)
# username = form.cleaned_data['username']
password1 = form.cleaned_data['password1']
password2 = form.cleaned_data['password2']
if password1 == password2:
newuser = form.save(commit=False)
newuser.user = request.user
newuser.save()
return redirect('strona:index')
return render(request, self.template_name, {'form': form})
models.py
class SUser(models.Model):
# User = user_model()
user = models.OneToOneField(User, on_delete=models.CASCADE)
username = models.CharField(max_length=200)
# last_login = models.DateTimeField(blank=True)
# is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
relations = models.ManyToManyField('self')
# is_anonymous = False
# is_authenticated = True
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ('',)
FORMS.PY
class RegPanel(UserCreationForm):
# password = forms.CharField(max_length=16, widget=forms.PasswordInput)
# first_name = forms.CharField(max_length=100, required=False)
# last_name = forms.CharField(max_length=100, required=False)
# is_staff = forms.BooleanField(required=False)
# birthday = forms.DateField(required=False)
class Meta:
model = SUser
fields = ['username', 'is_staff', 'first_name', 'last_name']
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
# user.set_password(self.cleaned_data["passwosrd1"])
if commit:
user.set_password(self.cleaned_data["password1"])
user.save()
# if commit:
# user.save()
return user
SETTINGS.PY:
AUTH_USER_MODEL = 'auth.User'
EDIT
ПОЛНЫЙ ОШИБКА след вызовов TRACEBACK:
Файл «C: \ Users \ Dawid \ AppData \ Local \ P rograms \ Python \ Python35-32 \ lib \ site-packages \ django-1.10.3-py3.5.egg \ django \ core \ handlers \ exception.py " внутри 39. response = get_response (запрос)
Файл «C: \ Users \ Dawid \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ django-1.10.3-py3.5.egg \ django \ core \ handlers \ base. ру " в _get_response 187. ответ = self.process_exception_by_middleware (е, запрос)
Файл " C: \ Users \ Dawid \ AppData \ Local \ Programs \ Python \ Python35-32 \ Lib \ сайта-пакеты \ django-1.10.3-py3.5.egg \ django \ core \ handlers \ base.py " в _get_response 185. ответа = wrapped_callback (запрос, * callback_args, ** callback_kwargs)
Файл «C: \ Users \ Dawid \ AppData \ Local \ Programs \ Python \ Python35-32 \ Lib \ сайта-пакеты \ django- 1.10.3-py3.5.egg \ Джанго \ Views \ родовое \ base.py " в виде 68. возвратного self.dispatch (запрос, * арг ** kwargs)
Файл " C: \ Пользователи \ Dawid \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ django-1.10.3-py3.5.egg \ django \ views \ generic \ base.py " при отправке 88. возвратный обработчик (запрос, * args, ** kwargs)
Файл «C: \ Users \ Dawid \ PycharmProjects \ Zananie \ strona \ views.py» в сообщении 97.newuser.user = request.user
Файл «C: \ Users \ Dawid \ AppData \ Local \ Programs \ Python \ Python35-32 \ Lib \ сайта-пакеты \ Джанго-1.10.3-py3.5.egg \ Джанго \ дб \ модели \ поля \ related_descriptors.py» в наборе 211. self.field.remote_field.model._meta.object_name,
Тип исключения: ValueError в/индексе/регистрации/Exception Значения: Не удается присвоить «< SimpleLazyObject:>»: «SUser.user» должен быть экземпляром «Пользователь».
Пожалуйста, кто-нибудь может мне помочь? С наилучшими пожеланиями.
Что вы пытаетесь сделать? Это регистрационная форма, поэтому пользователь еще не может войти в систему. Итак, почему вы пытаетесь сохранить текущего пользователя на новый пользовательский объект? –
Так как я могу сохранить нового пользователя после «if password1 == password2:»? – LOLOLOLO
Правильно? – LOLOLOLO