Как решить проблему IImportError в Django?

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

    from django.contrib.auth.models import AbstractUser
    from django.db import models
    from django.db.models import CASCADE, BooleanField
    from user_app.forms import LoginForm
        
        
        class user_type(AbstractUser):
            is_user = models.BooleanField('Is user', default=False)
            is_police = models.BooleanField('Is police', default=False)
            is_insurance = models.BooleanField('Is insurance', default=False)
            is_rto: BooleanField = models.BooleanField('Is rto', default=False)
    
       class Owner(models.Model):
           user_id = models.AutoField(primary_key=True)
           login_id = models.ForeignKey(LoginForm, on_delete=models.DO_NOTHING)
           user_name = models.CharField(max_length=255)
           aadhar_number = models.CharField(max_length=16)
           photo = models.FileField()
           mobile = models.IntegerField()
           licence = models.CharField(max_length=10)
           address = models.TextField()
           state = models.CharField(max_length=10)
           district = models.CharField(max_length=10)
           city = models.CharField(max_length=10)
           created_at = models.DateTimeField(auto_now_add=True)
           updated_at = models.DateTimeField(auto_now_add=True)
           objects = models.Manager()

и еще одна ошибка импорта произошла в forms.py. это мой form.py

from django import forms
from user_app.models import user_type
    
    
    class LoginForm(forms.Form):
        username = forms.CharField(
            widget=forms.TextInput(
                attrs={
                    "class": "form-control"
                }
            )
        )
        password = forms.CharField(
            widget=forms.PasswordInput(
                attrs={
                    "class": "form-control"
                }
            )
        )
    
        class Meta:
            model = user_type
            fields = ('username', 'email', 'password1', 'password2', 'is_user','is_insurance', 
                                            'is_police', 'is_rto')

и когда я запускаю этот проект с помощью 'python manage.py runserver', то он показывает

 File "D:\PROJECT\Digital-Vehicle-Project\digi_vehicle\user_app\models.py", line 7, in <module>
    from user_app.forms import LoginForm
  File "D:\PROJECT\Digital-Vehicle-Project\digi_vehicle\user_app\forms.py", line 2, in <module>
    from user_app.models import user_type
ImportError: cannot import name 'user_type' from 'user_app.models' (D:\PROJECT\Digital-Vehicle-Project\digi_vehicle\user_app\models.py)

В модели владельца, в этой строке:

login_id = models.ForeignKey(LoginForm, on_delete=models.DO_NOTHING)

Внешний ключ должен быть приписан только к модели. Но в вашем коде есть ForeignKey, связанный с формой. Поэтому закодируйте модель здесь. После этого нет необходимости импортировать это:

from user_app.forms import LoginForm

Следовательно, это позволит избежать ошибки кругового импорта, с которой вы столкнулись.

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