Как решить проблему 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
Следовательно, это позволит избежать ошибки кругового импорта, с которой вы столкнулись.