ImportError:无法从部分初始化的模块“ bios.models”中导入名称“ Bio”(很可能是由于循环导入)

时间:2020-09-17 02:05:25

标签: python django django-models django-forms django-views

第一个应用程序models.py文件

from django.db import models
from projects.models import Project

class Bio(models.Model):
 name = models.CharField(max_length=200,null=True,blank=True)
 project = models.ManyToManyField(Project,blank=True)
 number = models.CharField(max_length=11,default=None,null=True)
 text = models.TextField(max_length=280)

 def __str__(self):
   return self.name

第二个应用model.py文件

from django.db import models
from django.contrib.auth.models import User
from bios.models import Bio
from django.conf import settings
 
class Project(models.Model):
   name = models.CharField(max_length=100)
   owner = models.ForeignKey(User, on_delete=models.CASCADE,null=True)
   bio = models.ManyToManyField(Bio)
   desc = models.TextField(max_length=200)

   def __str__(self):
     return self.name

我收到一个循环导入错误。 如何解决这个问题????

我的目标是创建一个与bio有很多关系的项目,我希望bio展示该项目

预先感谢

1 个答案:

答案 0 :(得分:1)

您可以直接从ManyToManyField引用模型,而不必导入。 :

from django.db import models
from django.contrib.auth.models import User
# Here, removed importing Bio 
from django.conf import settings
 
class Project(models.Model):
   name = models.CharField(max_length=100)
   owner = models.ForeignKey(User, on_delete=models.CASCADE,null=True)
   bio = models.ManyToManyField('bios.Bio') # Here
   desc = models.TextField(max_length=200)

   def __str__(self):
     return self.name