Ошибка DoesNotExist при использовании пользовательской модели User

У меня есть модель Group в моем group/models.py файле:

class Group(models.Model):
   leader = models.ForeignKey(User, on_delete=models.CASCADE)
   name = models.CharField(max_length=55)
   description = models.TextField()
   joined = models.ManyToManyField(User, blank=True)

и модель Account, которая является расширением стандартного User в django, в users/models.py:

class Account(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    joined_groups = models.ManyToManyField(Group, related_name='joined_group')
    created_groups = models.ManyToManyField(Group)

в users/admin.py:

class AccountInline(admin.StackedInline):
    model = Account
    can_delete = False
    verbose_name_plural = 'Accounts'

class CustomUserAdmin(UserAdmin):
    inlines = (AccountInline,)

admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)

Проблема, которую мне трудно понять, заключается в том, что когда я создаю нового пользователя, учетная запись для этого пользователя, похоже, не регистрируется. В нижней части страницы нового пользователя (через сайт django admin) новый аккаунт выглядит следующим образом:

new User admin page

Теперь, этот новый пользователь, кажется, имеет учетную запись, которая содержит joined_groups и created_groups, но когда я пытаюсь присоединиться или создать группу с этим новым пользователем, я получаю ошибку DoesNotExist - Account matching query does not exist

Я не уверен, почему новый пользователь/аккаунт не регистрирует свой аккаунт. Для сравнения, на моей странице AdminUser информация об учетной записи выглядит следующим образом:

Admin User admin page

Account: #1 для нового пользователя против Account: Acount object (6) для пользователя Admin.

Наконец, когда я захожу на сайт администратора django, добавляю нового пользователя в группу и нажимаю сохранить, Account: #1 меняется на Account: Acount object (7), что позволяет новому пользователю создавать и присоединяться к другим группам.

Я совершенно не понимаю, что происходит и почему это происходит. Это важно, потому что я хочу, чтобы новые пользователи, которые регистрируются, могли присоединяться и создавать группы с администратором, начинающим их. Неужели я испортил свою модель аккаунта? Или это что-то связанное с общей моделью пользователя django? Или это что-то совсем другое?

В принципе, у вас есть два models, соединенных relationship, но я не вижу кода для создания учетной записи object. Хорошей практикой является создание профиля, связанного с пользователем, с помощью сигнала post_save.

from django.contrib.auth.models import User
from django.dispatch import receiver
from django.db.models.signals import post_save
from .models import Account

@receiver(post_save, sender=User)
def create_save_account(sender, instance, created, **kwargs):
    if created:
        Account.objects.create(user=instance)
        instance.account.save()

Кроме того, я обращаюсь к документации и примерам.

Вернуться на верх