Django Admin: управление auth.models Пользователь из другой модели
Я хочу управлять атрибутом auth.models.User is_active из моей пользовательской модели UserProfile через страницу администратора.
class UserProfile(models.Model):
user = models.OneToOneField(
User,
verbose_name=_('User'),
related_name='user_profile',
on_delete=models.CASCADE,
)
invited_by = models.ForeignKey(
User,
verbose_name=_('Invited by'),
on_delete=models.SET_NULL,
related_name='profile_invitations',
null=True,
blank=True,
)
avatar = ResizedImageField(
size=[512, 512],
crop=['middle', 'center'],
quality=90,
verbose_name='avatar',
null=True,
blank=True,
upload_to=get_user_upload_path
)
attrs = models.CharField(
_('User data'),
max_length=10000,
)
phone_number = models.CharField(
_('Phone number'),
max_length=80,
null=True,
blank=True,
validators=[phone_regex_validator],
)
def __str__(self):
return '{}({})'.format(self.__class__.__name__, self.user.username)
def save(self, **kwargs):
if self.phone_number:
self.phone_number = create_alphanumeric_string(self.phone_number)
super().save(**kwargs)
@property
def attributes(self):
return json.loads(self.attrs or '{}')
@attributes.setter
def attributes(self, value):
self.attrs = json.dumps(value or {})
и в моем admin.py
@admin.register(UserProfile)
class UserProfileAdmin(admin.ModelAdmin):
list_display = ('user', 'attrs', 'invited_by')
search_fields = ('user__username',)
Я хочу добиться того, чтобы разрешить из админки UserProfile изменять поле is_active из auth.models.User. Мой вопрос в том, какой лучший способ решить эту проблему? Написать новую пользовательскую форму и прикрепить ее к представлению администратора или как-то прикрепить это поле к модели UserProfile? Или может быть другое решение?