2017-12-18 275 views
0

我从github获得了完整的代码,一切正常,服务器无任何问题地工作。但后来我试图做一些改变,像model.py添加一个新的类,并试图将其导入到admin.py我得到了这样的错误:ImportError:无法导入名称,也无法导入类

ImportError: cannot import name TechnicalExamination.

当然,我在此之前没有迁移,使用python manage.py makemigrationspython manage.py migrate

这是我在models.py类:

class HealthExamination(models.Model): 
class Meta: 
    verbose_name_plural = 'Health Examinations' 

doctor = models.CharField(max_length=70) 
person = models.ForeignKey(Person, on_delete=models.CASCADE) 
start_date = models.DateField() 
end_date = models.DateField() 

class TechnicalExamination(models.Model): 
    class Meta: 
    verbose_name_plural = 'Technical Examinations' 

    technician = models.CharField(max_length=70) 
    person = models.ForeignKey(Person, on_delete=models.CASCADE) 
    start_date = models.DateField() 
    end_date = models.DateField() 

def get_fields(self): 
    pairs = [] 
    for field in self._meta.fields: 
     name = field.name 
     try: 
      pairs.append((name, getattr(self, "get_%s_display" % name)())) 
     except AttributeError: 
      pairs.append((name, getattr(self, name))) 
    return pairs 

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

这里是我的admin.py:

from __future__ import unicode_literals 

from django.contrib import admin 

from .models import Person, Car, InsuranceCompany, Policy, HealthExamination, TechnicalExamination 

admin.site.register(Person) 
admin.site.register(Car) 
admin.site.register(InsuranceCompany) 
admin.site.register(Policy) 
admin.site.register(HealthExamination) 
admin.site.register(TechnicalExamination) 

这里是我的根:

enter image description here

+0

听起来像'TechnicalExamination'没有定义在与其他类相同的水平。 –

+0

TechnicalExamination在models.py上,就像HealthExaminations一样。但第一个不起作用,第二个起作用。 – Viola

+0

当然,但是'def __str__'在问题中没有正确缩进,那么您能否在文件中至少显示两个模型?一个工作,那个? –

回答

0
  1. 检查迁移文件 - 你应该有操作包含CreateModel您TechnicalExamination

    operations = [ 
        migrations.CreateModel(
         name='TechnicalExamination', 
    ... 
    

    如果有毛病迁移文件,再删除迁移目录和makemigration(您可能需要清空数据库,太),或使用--fake

  2. 从Django的壳进口:

    $python manage.py shell 
    > from your_app_name.models import TechnicalExamination 
    

如果不是进口的,你可以看到更多的细节Ë错误消息并进行调试。

from destrict_office.models import TechnicalExamination

我遇到了一些问题,.models导入方法,并且目前还不清楚导入方法

  • 尝试进口。

  • +0

    也有一些递归导入的可能性,但我看不到任何代码引发递归导入。检查你的models.py,没有其他模型的递归导入 – seuling

    相关问题