ImportError: cannot import name from partially initialized module Django
Я столкнулся с проблемой, которую я не знаю, почему возникает ошибка, пожалуйста, помогите мне решить эту ошибку:
error:
ImportError: cannot import name 'User' from partially initialized module
'authentication.models' (most likely due to a circular import)
(/app/authentication/models.py)
Модель пользователя:
from projects.models import Organization
class User(AbstractBaseUser, PermissionsMixin):
organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True)
ошибка возникает после этого ^импорта
Модели проектов:
from django.db import models
from authentication.models import User
class Organization(models.Model):
OWNER = 1
CONTRACTOR = 2
DISTRIBUTOR = 3
MANUFACTURER = 4
CONSULTANT = 5
ORG_TYPES = [
(OWNER, 'Owner'),
(CONTRACTOR, 'Contractor'),
(DISTRIBUTOR, 'Distributor'),
(MANUFACTURER, 'Manufacturer'),
(CONSULTANT, 'Consultant'),
]
name = models.CharField(max_length=255, default='')
created_at = models.DateTimeField(auto_now=True, null=True)
updated_at = models.DateTimeField(auto_now=True, null=True)
is_active = models.IntegerField(default=1, null=True)
created_by = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
org_type = models.CharField(max_length=1, choices=ORG_TYPES)
class Meta:
db_table = 'organizations'
class Project(models.Model):
name = models.CharField(max_length=255, default='')
description = models.CharField(max_length=255, default='')
created_at = models.DateTimeField(auto_now=True, null=True)
updated_at = models.DateTimeField(auto_now=True, null=True)
is_active = models.IntegerField(default=1, null=True)
created_by = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
account = models.ManyToManyField(User, related_name='account')
contractor = models.ForeignKey(Organization, related_name="contractor", on_delete=models.CASCADE)
distributor = models.ForeignKey(Organization, related_name="distributor", on_delete=models.CASCADE)
manufacturer = models.ForeignKey(Organization, related_name="manufacturer", on_delete=models.CASCADE)
consultant = models.ForeignKey(Organization, related_name="consultant", on_delete=models.CASCADE)
owner = models.ForeignKey(Organization, related_name="owner", on_delete=models.CASCADE)
class Meta:
db_table = 'projects'
это потому, что у вас есть два модуля, которые оба импортируют друг из друга (именно это означает ошибка, когда она говорит: "скорее всего, из-за циркулярного импорта")
Самым простым способом решения этой проблемы было бы поместить определение модели User
в тот же файл, что и определение Organization
это также имеет смысл, потому что кажется, что ваш пользователь принадлежит организации