Редактирование прав пользователя в админке django, для пользовательской модели пользователя
У меня есть пользовательская модель пользователя, как показано ниже:
class Account(AbstractBaseUser):
email = models.EmailField(verbose_name='ایمیل', max_length=60, unique=True)
username = models.CharField(verbose_name='نام کاربری', max_length=30, unique=True)
...
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
objects = MyAccountManager()
def __str__(self):
return self.email
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return True
Затем я пишу такой код в файле admin.py:
@admin.register(Account)
class PersonAdmin(ImportExportModelAdmin):
list_display = ('email', 'username', 'phone_number', 'chart_level', 'chart_view_count')
list_filter = ("is_admin", 'is_active', 'is_staff', 'chart_level', 'is_plus')
search_fields = ['username', 'email', 'phone_number', 'referral_code']
readonly_fields = ("date_joined", "last_login", "chart_view_count", "id")
fieldsets = (
('اطلاعات فردی', {
'classes': ('collapse',),
'fields': ('email', 'username', 'phone_number', 'telegram_user_id', 'profile_image', 'date_joined',
'last_login', 'is_english', 'is_foreign', 'chart_view_count', 'password')
}),
('اطلاعات خرید', {
'classes': ('collapse',),
'fields': ('used_referral_code', 'total_pay_r', 'total_pay_c', 'is_using_discount', 'using_discount_code',
'current_transaction_address', 'referral_code', 'is_first_payment')
}),
('سطح کاربری', {
'classes': ('collapse',),
'fields': ('chart_level', 'is_plus', 'expiration_date', 'reserved_trader', 'is_admin', 'is_active',
'is_staff', 'is_superuser', 'groups', 'user_permissions')
}),
)
Он отлично работает для тысяч пользователей. Теперь я хочу добавить права пользователя для изменения страницы пользователя в панели администратора, поэтому я добавляю "PermissionsMixin" следующим образом:
class Account(AbstractBaseUser, PermissionsMixin):
...
затем я попытался мигрировать и получил эту ошибку: django.db.utils.ProgrammingError: there is no unique constraint matching given keys for referenced table "accounts_account"
что мне делать?