【发布时间】:2019-10-21 09:13:13
【问题描述】:
我收到一个错误 文件“D:\DjangoProjects\StudentExam\website\Student\validators.py”,第 2 行,从 .models 导入分支
ImportError: cannot import name 'Branch' from 'Student.models' (D:\DjangoProjects\StudentExam\website\Student\models.py)
对于语句“from .models import Branch”,写在validators.py文件中。 即使这两个文件在同一个应用程序中,它也会出错。我不明白出了什么问题。
我什至尝试过“从 Student.models/website.models 导入分支”,但它显示未解析的参考分支。
目录结构如下:-
StudentExam
-venv
-website
-Student
-migrations
-__init__.py
-admin.py
-apps.py
-models.py
-tests.py
-urls.py
-validators.py
-views.py
-website
-__init__.py
-settings.py
-urls.py
-wsgi.py
-db.sqlite3
-manage.py
validators.py :-
from django.core.exceptions import ValidationError
from .models import Branch
def increment_id():
last_branch_id = Branch.objects.all().order_by('id').last()
new_branch_id = last_branch_id + 1
return new_branch_id
models.py :-
from django.db import models
from .validators import validate_sem,cie_out_of,ese_out_of,increment_id
class Branch(models.Model):
branchID = models.PositiveSmallIntegerField(primary_key = True, serialize = True, validators = increment_id())
branchName = models.CharField(max_length = 30)
objects = models.Manager()
def __str__(self):
return ', '.join('{} = {}'.format(key, value) for key, value in self.__dict__.items() if key != "_state")
【问题讨论】:
-
你有一个循环导入。您需要将它们放在同一个文件中。但请注意,您根本不想这样做,您应该只使用已经自动递增的自动主键。做这一切是没有意义的。尤其是验证器是用于验证,而不是用于创建新值
标签: python django-models