NOT NULL约束失败错误
我想选择一个事件并上传照片,但是当我进行迁移时,它会给出 NOT NULL约束失败:myapp_doc.event错误。NOT NULL约束失败错误
即使在删除视图后,我仍然收到错误。我该怎么办 ?
车型
class Doc(models.Model):
events = (
(None, "choose one of it"),
('bbq', 'Barbeque '),
('meet', 'Meeting'),
)
doc = models.FileField(upload_to='uploads/')
user = models.ForeignKey(User, null=False, blank=True)
event = models.CharField(max_length=15, choices=events, null = True)
def __unicode__(self):
return unicode(self.user)
查看
def upload_file(request):
user= request.user
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
doc = form.save(commit=False)
doc.user = request.user
doc.save()
messages.success(request, 'Dosya Yuklendi')
return HttpResponseRedirect('/uploadnew/')
return render(request, 'upload.html', {'form': form})
def upload_file(request):
user= request.user
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
doc = form.save(commit=False)
doc.user = request.user
doc.save()
messages.success(request, 'Dosya Yuklendi')
return HttpResponseRedirect('/uploadnew/')
return render(request, 'upload.html', {'form': form})
好我得到了你的问题。
在models.py,要定义为事件列这是该类型的models.CharField的空=真选项。
event = models.CharField(max_length=15, choices=events, null = True)
但作为事实上,“CharField” 不在它的空选项。 只有'max_length'选项可用。
请参阅本 - >https://docs.djangoproject.com/en/1.9/ref/models/fields/
所以从技术上说,你需要删除是空=真一部分,如果你真的想要让你的web应用程序的用户具有*没有选择任何选项,那么您可以将默认值值添加到您的事件列中,该列将从您在事件事件列中定义的选项中选取一个默认值。
请参阅官方文档中的示例。这是一样的,你想要什么 - >https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.Field.choices
所以,你的事件列终于将是这个样子,如果你的默认值是烧烤:
event = models.CharField(max_length=15, choices=events, default=bbq)
此外,如在官方文档,我不认为你不需要围绕'烧烤'或'见面'的单引号。
我希望这能解决您的问题。
非常感谢你! –
乐于帮助。 :) –
错误在哪里发生?你可以用追溯编辑你的原始问题吗?当你改变你的模型时,你是否也创建了一个迁移? –
这与你的观点无关。请从问题中删除它,并解释您对模型所做的更改 – e4c5
@ShangWang我在模型中添加事件,然后在迁移时创建迁移,问题就会发生。 –