У меня есть структурная проблема с моим кодом управления пользователями в 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,