Для меня сработало решение на основе:
https://docs.djangoproject.com/pl/1.11/topics/auth/customizing/#extending-user
Позвольте мне объяснить, что я сделал с группами, расширяющими модель по умолчанию псевдонимом электронной почты:
Прежде всего я создал собственное приложение django, назовите его
python manage.py startapp auth_custom
Кодовый раздел:
В auth_custom / models.py Я создал объект CustomGroup
from django.contrib.auth.models import Group
from django.db import models
class CustomGroup(models.Model):
"""
Overwrites original Django Group.
"""
def __str__(self):
return "{}".format(self.group.name)
group = models.OneToOneField('auth.Group', unique=True)
email_alias = models.EmailField(max_length=70, blank=True, default="")
В auth_custom / admin.py :
from django.contrib.auth.admin import GroupAdmin as BaseGroupAdmin
from django.contrib.auth.models import Group
class GroupInline(admin.StackedInline):
model = CustomGroup
can_delete = False
verbose_name_plural = 'custom groups'
class GroupAdmin(BaseGroupAdmin):
inlines = (GroupInline, )
# Re-register GroupAdmin
admin.site.unregister(Group)
admin.site.register(Group, GroupAdmin)
После выполнения миграций у меня есть такой результат в представлении администратора Django.
Пользовательская группа в Django Admin
Чтобы получить доступ к этому настраиваемому полю, вы должны набрать:
from django.contrib.auth.models import Group
group = Group.objects.get(name="Admins") # example name
email_alias = group.customgroup.email_alias
Если есть какие-либо ошибки, пожалуйста, сообщите мне, я исправлю этот ответ.