У меня есть структурная проблема с моим кодом управления пользователями в django

Я новичок в django. Я пытаюсь сделать пользовательское управление пользователями в django admin.

У меня есть админка, py вот такая.

""" from django.contrib import admin from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from .forms0 import UserCreationForm, UserAdminChangeForm из .models import User #from django.contrib import apps.authentication.models import apps.site.register(model)

Зарегистрируйте свои модели здесь.

class UserAdmin(BaseUserAdmin):
    search_fields = ['employee', 'username']

    add_form = UserAdminCreationForm
    form = UserAdminChangeForm

    list_display = ('username', 'employee', 'admin', 'staff', 'active')
    list_filter = ('admin', 'staff', 'active')

"""

Вызывает сначала form0.py перед моим model.py

""" add_form = UserAdminCreationForm форма = UserAdminChangeForm """

Models.py

""" из django.db import models from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin, UserManager

class User(AbstractBaseUser, PermissionsMixin):
    username = models.CharField(max_length=255, unique=True, null=False, blank=False, verbose_name='Username')
    employee = models.OneToOneField('Employee',
                                    null=True,
                                    blank=True,
                                    verbose_name='Employee ID',
                                    related_name='user',
                                    on_delete=models.PROTECT)
    admin = models.BooleanField(default=False)
    active = models.BooleanField(default=True)
    staff = models.BooleanField(default=False)
    timestamp = models.DateTimeField(auto_now_add=True)

"""

form0.py

""" из django import forms from django.db import models from .models import User

class UserAdminCreationForm(forms.ModelForm):
    """A form for creating new users. Includes all the required
    fields, plus a repeated password."""

    password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
    password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ('username', 'employee', 'admin', 'active', 'staff', 'groups')

"""

Я получаю эту ошибку Когда я мигрирую, он загружает сначала forms0 перед моделью, и я получаю следующее

'ValueError: Невозможно создать поле формы для 'employee', потому что связанная с ним модель 'Employee' еще не загружена'

У меня возникает конфликт, если я обращаюсь к файлу admin.py. Это дает мне эту ошибку.

"ImportError: cannot import name 'employee' from partially initialized module 'apps.main.admin' (скорее всего, из-за циклического импорта)"

Пожалуйста, сообщите мне, как я могу структурировать свой код, чтобы избежать этого конфликта.

Вы должны использовать Employee, а не строку 'Employee'

employee = models.OneToOneField('Employee', /// this shouldn't be string. Try just Employee without ''
                                    null=True,
                                    blank=True,
Вернуться на верх