2017-12-18 309 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

    相關問題