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

это также имеет смысл, потому что кажется, что ваш пользователь принадлежит организации

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