I'm facing an issue with Django's admin panel while trying to manage a custom user model. I have created a Customuser model for user registration and management, separate from the built-in User model. However, when I try to access the admin panel to view, edit, or delete user entries, I encounter an IntegrityError related to the django_admin_log table
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
from django.db import models
class CustomUserManager(BaseUserManager):
def create_user(self, email, password=None, **extra_fields):
if not email:
raise ValueError('The Email field must be set')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password=None, using=None, **extra_fields):
user=self.create_user(
email=self.normalize_email(email),
password=password
)
user.is_admin=True
user.is_active=True
user.is_staff=True
user.is_superuser=True
user.save(using=self._db)
return user
class CustomUser(AbstractBaseUser, PermissionsMixin):
user_id = models.AutoField(primary_key=True)
user_name = models.CharField(max_length=100)
first_name=models.CharField(max_length=100)
last_name=models.CharField(max_length=100)
email = models.EmailField(unique=True)
password = models.CharField(max_length=100)
company_name = models.CharField(max_length=200, blank=True, null=True)
contactno = models.IntegerField(blank=True, null=True)
address = models.TextField(blank=True, null=True)
city = models.CharField(max_length=100, blank=True, null=True)
state = models.CharField(max_length=100, blank=True, null=True)
zip = models.CharField(max_length=20, blank=True, null=True)
country = models.CharField(max_length=100, blank=True, null=True)
profile_picture = models.CharField(max_length=200, blank=True, null=True)
date_of_birth = models.DateField(blank=True, null=True)
gender = models.CharField(max_length=10, blank=True, null=True)
is_active = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
last_login = models.DateTimeField(blank=True, null=True)
date_joined = models.DateTimeField(auto_now_add=True)
objects = CustomUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['user_name']
class Meta:
app_label = 'shop'
admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth import get_user_model
from .models import CustomUser,Category
CustomUser=get_user_model()
# Register your models here.
class CustomUserAdmin(UserAdmin):
model = CustomUser
list_display = ('email', 'user_name', 'last_login', 'date_joined', 'is_active')
filter_horizontal = ()
list_filter = ()
fieldsets = ()
# Update the ordering attribute to use 'user_name'
ordering = ('email',)
admin.site.register(CustomUser, CustomUserAdmin)
admin.site.register(Category)
Issue: When I log in as an admin user and try to access the Customers model in the admin panel, I get the following IntegrityError: IntegrityError at /admin/myapp/customers/ insert or update on table "django_admin_log" violates foreign key constraint "django_admin_log_user_id_c564eba6_fk_auth_user_id" DETAIL: Key (user_id)=(34) is not present in table "auth_user".
Why am I encountering this IntegrityError related to the django_admin_log table? How can I resolve this issue and successfully manage entries for my Customers model in the admin panel? I appreciate any insights or guidance on resolving this issue. Thank you in advance!