Закончилось создание моей собственной модели User, которая решает эту проблему.
from django.contrib.auth.models import PermissionsMixin
from django.db import models
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
class Player(PermissionsMixin):
date_joined = models.DateTimeField(_('date joined'), default=timezone.now, editable=False)
last_login = models.DateTimeField(_('last login'), blank=True, null=True, editable=False)
username = models.CharField(_('username'), max_length=128, unique=True)
REQUIRED_FIELDS=()
USERNAME_FIELD='username'
is_active = True
@property
def is_anonymous(self):
return False
@property
def is_authenticated(self):
return True
@property
def is_staff(self):
return self.is_superuser
@property
def steam_id(self):
return self.steam_account.uid
@property
def steam_account(self):
return self.socialaccount_set.get(provider='steam')
def set_unusable_password(self):
"""
This only exists for allauth.
"""
pass
def __str__(self):
return self.username
from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from .models import Player
@admin.register(Player)
class PlayerAdmin(admin.ModelAdmin):
readonly_fields=('last_login','date_joined')
fieldsets = (
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
(_('Permissions'), {'fields': ('is_superuser', 'groups', 'user_permissions')}),
)
list_display = ('username', 'steam_id', 'is_superuser', 'date_joined', 'last_login', 'steam_id')
list_filter = ('is_superuser', 'groups')
ordering = ('username','last_login', 'date_joined')
filter_horizontal = ('groups', 'user_permissions',)