С пользовательским пользователем у меня нет формы группы в админке django
Я создал пользовательского пользователя, он работает хорошо, но я заметил, что в админке django, если я создаю нового пользователя, у меня нет доступа к форме, которая управляет группами
Если я использую стандартную систему пользователей, то при создании пользователя, в админке, у вас есть доступ к управлению группами и разрешениями. С другой стороны, в моем проекте группа и пользователь не связаны
my models.py
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
from django.db import models
class CustomUserManager(BaseUserManager):
def create_user(self, email, password):
if not email:
raise ValueError('Vous devez entrer une adresse email.')
email = self.normalize_email(email)
user = self.model(email=email)
user.set_password(password)
user.save()
return user
def create_superuser(self, email, password):
user = self.create_user(email=email, password=password)
user.is_staff = True
user.is_admin = True
user.save()
return user
class CustomUser(AbstractBaseUser):
email = models.EmailField(
max_length=255,
unique=True,
blank=False
)
nom = models.CharField(max_length=50, blank=False, unique=True)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_admin = models.BooleanField(default=False)
objects = CustomUserManager()
USERNAME_FIELD = "email"
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
def __str__(self):
return self.email
в файле views.py
from django.contrib.auth import authenticate
from django.http import HttpResponse
from django.shortcuts import render, redirect
from django.contrib.auth import login as log_user
from django.contrib.auth import logout as logout_user
from accounts.forms import UserRegistrationForm
from accounts.models import CustomUser
def home(request):
# return HttpResponse(f"Bienvenue {request.user} !")
nom_user = request.user.nom
#nom_user = CustomUser.objects.all()
context = {'nom_user': nom_user}
return render(request, "index.html", context)
def signup(request):
if request.method == "POST":
form = UserRegistrationForm(request.POST)
if form.is_valid():
form.save()
return redirect("home")
else:
form = UserRegistrationForm()
return render(request, "accounts/signup.html", {"form": form})
def profile(request):
return HttpResponse(f"Bienvenue {request.user.email}")
def login(request):
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password")
user = authenticate(request, username=username, password=password)
if user is not None:
log_user(request, user)
return redirect("home")
else:
return HttpResponse("Impossible de connecter l'utilisateur...")
return render(request, 'registration/login.html', {})
def logout(request):
logout_user(request)
return redirect("home")
admin.py
from django.contrib import admin
from accounts.models import CustomUser
@admin.register(CustomUser)
class CustomUserAdmin(admin.ModelAdmin):
list_display = ('email', 'nom', )
в settings.py
AUTH_USER_MODEL = "accounts.CustomUser"
спасибо за любую помощь
Я добавил PermissionsMixin в модель CustomUser
class CustomUser(AbstractBaseUser, PermissionsMixin)
и в admin.py добавил это в fieldsets
('Permissions', {'fields': ('is_admin', 'groups',)}),
и теперь в админке я могу связать пользователей с группами разрешений