Как лучше реализовать Update для AbstractUser в Django?

Ссылка скопирована
0 ответов

Нужно понять: в моем приложении реализованы регистрация/вход с помощью наследования UserCreationForm. Как осуществить изменение пользователя, задействовав UserChangeForm?

#models.py

from django.contrib.auth.models import AbstractUser # Create your models here. class CustomUser(AbstractUser): pass def __str__(self): return self.username

#forms.py

from django.contrib.auth.forms import UserCreationForm, UserChangeForm from .models import CustomUser class CustomUserCreationForm(UserCreationForm): class Meta(UserCreationForm): model = CustomUser fields = ('first_name', 'last_name', 'username', 'email') class CustomUserChangeForm(UserChangeForm): class Meta: model = CustomUser fields = ('first_name', 'last_name', 'username', 'email')

#views.py

from django.shortcuts import render, redirect # Create your views here. from django.urls import reverse_lazy from django.views.generic.edit import CreateView from django.views import View from .forms import CustomUserCreationForm, CustomUserChangeForm from .models import CustomUser class SingUpView(CreateView): form_class = CustomUserCreationForm success_url = reverse_lazy('login') template_name = 'signup.html' # выдает ошибку class CustomUserUpdateView(View): def get(self, request, *args, **kwargs): user_id = kwargs.get("id") user = CustomUser.objects.get(id=user_id) form = CustomUserChangeForm(instance=user) return render( request, "users/update.html", {"form": form, "user_id": user_id} ) def post(self, request, *args, **kwargs): user_id = kwargs.get("id") user = CustomUser.objects.get(id=user_id) form = CustomUserChangeForm(request.POST, instance=user) if form.is_valid(): form.save() return redirect("users_list") return render( request, "users/update.html", {"form": form, "user_id": user_id} )

#update.html

{% if form.errors %} <div> <ul> {% for error in form.errors %} <li><strong>{{ error|escape }}</strong></li> {% endfor %} </ul> </div> {% endif %} <form action="{% url 'users_update' id=user_id %}" method="post"> {% csrf_token %} <table border="1"> {{ form }} </table> <input type="submit" value="Сохранить"> </form>

Сейчас ситуация такая: пыталась реализовать update через наследование класса View с методами get/post, выдает ошибку:По вводным: customUser matching query does not exist.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно