我正在尝试通过外键将模型发布链接到模型主题。当我运行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也没有识别出模型主题
答案 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模型。