gpt4 book ai didi

python - 如何解决django中的循环导入错误?

转载 作者:太空狗 更新时间:2023-10-30 02:26:31 24 4
gpt4 key购买 nike

我知道这个错误可能是由于循环导入错误造成的,但我对此了解不多,所以无法更正它。我尝试使用类似问题中给出的方法但无法解决它。该项目有两个应用程序咨询和主要,我需要将它们的模型导入彼此,

咨询/模型.py

from django.db import models
from django.contrib.auth.models import User
from main.models import Customer


class Question(models.Model):
name = models.ForeignKey(Customer, on_delete=models.CASCADE)
type = models.CharField(max_length=100, default="SkinCare")
title = models.CharField(max_length=1000)
body = models.CharField(max_length=1000000)
image = models.FileField(blank=True, default=None)
time = models.DateTimeField()
deltatime = models.IntegerField(default=0)

def __str__(self):
return str(self.time)


class Reply(models.Model):
name = models.ForeignKey(Question, on_delete=models.CASCADE)
user = models.ForeignKey(Customer, on_delete=models.CASCADE)
text = models.CharField(max_length=10000000000)
like = models.IntegerField(default=0)
dislike = models.IntegerField(default=0)
time = models.DateTimeField()
deltatime = models.IntegerField(default=0)

def __str__(self):
return str(self.time)

主要/模型.py

from django.contrib.auth.models import User
from django.db import models
from consult.models import Question, Reply


class Customer(models.Model):
name = models.ForeignKey(User, null=True)
gender = models.CharField(max_length=100)
skin_type = models.CharField(max_length=1000)
hair_type = models.CharField(max_length=1000)
bookmarked = models.ManyToManyField(Question)

def __str__(self):
return str(self.name)

当我运行尝试迁移 appps 时出现以下错误:

Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\Nikhil Khandelwal\AppData\Local\Programs\Python\Python35-
32\lib\site-packages\django-1.10.4-
py3.5.egg\django\core\management\__init__.py", line 367, in execute_from_
command_line
utility.execute()
File "C:\Users\Nikhil Khandelwal\AppData\Local\Programs\Python\Python35-
32\lib\site-packages\django-1.10.4-
py3.5.egg\django\core\management\__init__.py", line 341, in execute
django.setup()
File "C:\Users\Nikhil Khandelwal\AppData\Local\Programs\Python\Python35-
32\lib\site-packages\django-1.10.4-py3.5.egg\django\__init__.py", line 27,
in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Users\Nikhil Khandelwal\AppData\Local\Programs\Python\Python35-
32\lib\site-packages\django-1.10.4-py3.5.egg\django\apps\registry.py", line
108, in populate
app_config.import_models(all_models)
File "C:\Users\Nikhil Khandelwal\AppData\Local\Programs\Python\Python35-
32\lib\site-packages\django-1.10.4-py3.5.egg\django\apps\config.py", line
199, in import_models
self.models_module = import_module(models_module_name)
File "C:\Users\Nikhil Khandelwal\AppData\Local\Programs\Python\Python35-
32\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 665, in exec_module
File "<frozen importlib._bootstrap>", line 222, in
_call_with_frames_removed
File "C:\New folder\WebD\zerovey\consult\models.py", line 3, in <module>
from main.models import Customer
File "C:\New folder\WebD\zerovey\main\models.py", line 3, in <module>
from consult.models import Question, Reply
ImportError: cannot import name 'Question'

考虑到我是 Django 的初学者,请回答,在此先感谢您:)

最佳答案

使用 to='<app_lable>.<Model Name>'在外键和多对多字段中

从文件中删除导入模型,在模型中添加外键和 manytomany 字段,就像我在下面的代码中所做的那样。 to='consult.Question'当我们从 makemifration 命令创建迁移时,在迁移文件中使用硬编码模型名称,因此使用相同的方式编写外键和 Manytomany 字段

from django.contrib.auth.models import User 
from django.db import models
class Customer(models.Model):
name = models.ForeignKey(User, null=True)
gender = models.CharField(max_length=100)
skin_type = models.CharField(max_length=1000)
hair_type = models.CharField(max_length=1000)
bookmarked = models.ManyToManyField(to='consult.Question')

def __str__(self):
return str(self.name)

关于python - 如何解决django中的循环导入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44601550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com