名称错误:无法导入[型号名称]

时间:2016-11-12 15:57:51

标签: django django-models nameerror django-syncdb makemigrations

我正在尝试通过外键将模型发布链接到模型主题。当我运行makemigrations命令时,它会引发导入错误,并说出名称'主题'没有定义。可能是什么原因造成的?它当然似乎是定义的。我几乎排除了数据库中的问题。

class Post(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)        
    title = models.CharField(max_length=100)
    summary = models.TextField(blank=True, null=True)
    content = models.TextField()
    draft = models.BooleanField(default=False)
    details = models.CharField(blank=True, null=True, max_length=250)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
    topic = models.ForeignKey(Topic, blank=True, null=True)
    thumbnail = models.ImageField(upload_to='media', blank=True, null=True)


    def get_absolute_url(self):
        return reverse('posts:detail', kwargs={'pk': self.pk})

    def __str__(self):
        return self.title


class Topic(models.Model):
    name = models.CharField(max_length=50)
    description = models.TextField()
    picture = models.ImageField(upload_to='media', blank=True, null=True)
    isperson = models.BooleanField(default=False)
    ispolicy = models.BooleanField(default=False)
    positive = models.BooleanField(default=True)
    percent = models.CharField(max_length=5)

    def __str__(self):
        return self.name

有什么想法吗?我在这段代码中看不到任何问题,我的IDE也没有识别出模型主题

2 个答案:

答案 0 :(得分:1)

我正在考虑您已在文件中正确缩进Post模型的代码。

解决方案:尝试在帖子上方定义主题。

答案 1 :(得分:0)

首先,这个

else if (choice == PHONE_WORD)
{
        cout << "\nEnter the phone word: ";
        cin >> phoneWord;
        /*while (phoneWord.length() != 8)
        {
            cout << "Please enter a valid phone number length: ";
            getline(cin, phoneWord);
        }*/

        for (int i = 0; i < phoneWord.length(); i++)
        switch (phoneWord.at(i))
        {
            case 'A':
            case 'a':
            case 'B':
            case 'b':
            case 'C':
            case 'c':
                cout << "2";
                break;
            case 'D':
            case 'd':
            case 'E':
            case 'e':
            case 'F':
            case 'f':
                cout << "3";
                break;
            case 'G':
            case 'g':
            case 'H':
            case 'h':
            case 'I':
            case 'i':
                cout << "4";
                break;
            case 'J':
            case 'j':
            case 'K':
            case 'k':
            case 'L':
            case 'l':
                cout << "5";
                break;
            case 'M':
            case 'm':
            case 'N':
            case 'n':
            case 'O':
            case 'o':
                cout << "6";
                break;
            case 'P':
            case 'p':
            case 'Q':
            case 'q':
            case 'R':
            case 'r':
            case 'S':
            case 's':
                cout << "7";
                break;
            case 'T':
            case 't':
            case 'U':
            case 'u':
            case 'V':
            case 'v':
                cout << "8";
                break;
            case 'W':
            case 'w':
            case 'X':
            case 'x':
            case 'Y':
            case 'y':
            case 'Z':
            case 'z':
                cout << "9";
                break;
            case '-':
                cout << "-";
                break;
            default:
                cout << "Please enter a valid input: ";
                break;
        }

        cout << phoneWord << " translates to " << phoneWord.at(0) << phoneWord.at(1) << phoneWord.at(2) << phoneWord.at(3) << phoneWord.at(4) << phoneWord.at(5) << phoneWord.at(6) << phoneWord.at(8) << ".";
}

应该是这个

topic = models.ForeignKey(Topic, blank=True, null=True)

这样它告诉django您正在为模型设置一个外键,该模型尚未声明,但将在代码中进一步声明。

其次,您应该正确缩进Post模型及其方法:

topic = models.ForeignKey('Topic', blank=True, null=True)

因为你现在拥有它,django不明白未缩进的字段属于Post模型。