Модель User не зарегистрирована (django-4 admin.py)

Я пытаюсь дать User (модель по умолчанию django, не пользовательская модель) Адрес в представлении администратора. Я впервые работаю с разными версиями django в разных проектах, я делаю то же самое в Django 2 и это работает, а здесь я использую Django 4.

Это мой model.py:

Это мой admin.py:

from django.contrib import admin
from django.contrib.auth.models import User

from .models import Product, ProductEntry, EntryType, Opinion, Address


# Register your models here.

class AddresInline(admin.TabularInline):
    model = Address
    extra = 1

class UserAdmin(admin.ModelAdmin):
    inlines = [AddresInline]


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

И последнее, settings.py:

Работая с пользовательской моделью django (не пользовательской моделью), я сначала снимаю регистрацию User и заново добавляю его с помощью UserAdmin.

Я полагаю, что проблема связана с вашим классом Address, который использует ForeignKey вместо OneToOneField. С помощью OneToOneField вы можете расширить модель по умолчанию User. Вот что, на мой взгляд, должно работать:

class Address(models.Model):
    street_name = models.CharField(max_length=60)
    number = models.IntegerField()
    block = models.IntegerField(null=True)
    floor = models.IntegerField(null=True)
    door = models.CharField(max_length=1, blank=True)
    city = models.CharField(max_length=60)
    code_postal = models.IntegerField()

    # Change the user here to a OneToOneField:
    user = models.OneToOneField(User, on_delete=models.CASCADE)

Если вы посмотрите docs для расширения стандартной модели User, вы увидите, что я имею в виду.

Расширение существующей модели пользователя

.

...

Если вы хотите хранить информацию, связанную с User, вы можете использовать поле OneToOneField к модели, содержащей поля для дополнительной информации. Такая модель один-к-одному часто называется моделью профиля, поскольку она может хранить информацию о пользователе сайта, не связанную с авторизацией. Для Например, вы можете создать модель Employee:

Я предполагаю, что вы использовали ForeignKey, поскольку многие пользователи могут иметь один и тот же адрес . Однако, вы все равно можете сделать адрес для каждого пользователя уникальным, т.е. OneToOneField, и все детали адреса будут одинаковыми, только автоматически сгенерированный первичный ключ этих адресов будет одинаковым.

INSTALLED_APPS были неправильно упорядочены.

У меня было так:

INSTALLED_APPS = [
'acme_nft_app.apps.AcmeNftConfig', #From
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'livereload',
'mathfilters']

Но мое приложение должно быть после django defaults:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'acme_nft_app.apps.AcmeNftConfig', #To
'livereload',
'mathfilters']
Вернуться на верх