【发布时间】:2015-06-27 16:24:27
【问题描述】:
更改模型后,我在项目中使用了继承模型;但我给出了不可为空的字段错误。我该怎么办? 我使用的是 Django 1.7
class Questions(models.Model):
question_category = models.ForeignKey(Course, blank=False)
question_author = models.ForeignKey(Author, blank=False)
question_details = models.CharField(max_length=100, blank=False, default='')
timestamp = models.DateTimeField(auto_now_add=True)
class TypeFive(Questions):
question_title = models.CharField(max_length=100, blank=False, default=generator(5), unique=True, editable=False)
def __str__(self):
return "{}".format(self.question_title)
class TypeFiveChoice(models.Model):
question_choice = models.ForeignKey(TypeFive)
is_it_question = models.BooleanField(default=False)
word = models.CharField(default='', blank=False, max_length=20)
translate = models.CharField(default='', blank=False, max_length=20)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return "{} : {}, {}".format(self.question_choice, self.word, self.translate)
迁移后:
You are trying to add a non-nullable field 'questions_ptr' to typefive without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
【问题讨论】:
-
为了从
TypeFive中的Questions继承,Django需要添加一个从TypeFive到Questions的关系。对于TypeFive中可能已经在数据库中的所有记录,Django 现在不知道应该将TopFive与哪个问题相关联。这就是migrate命令所要求的。您有几个选项,但它们在很大程度上取决于您的用例以及您是否处于早期开发阶段,或者是否有一个生产数据库必须稍后运行此迁移。 -
我处于早期开发阶段并在本地主机上运行它,所以我不关心我的记录。现在,我该怎么办?
标签: python django inheritance python-3.x django-models