2016-07-28 128 views
0

我想选择一个事件并上传照片,但是当我进行迁移时,它会给出 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}) 
+0

错误在哪里发生?你可以用追溯编辑你的原始问题吗?当你改变你的模型时,你是否也创建了一个迁移? –

+0

这与你的观点无关。请从问题中删除它,并解释您对模型所做的更改 – e4c5

+0

@ShangWang我在模型中添加事件,然后在迁移时创建迁移,问题就会发生。 –

回答

0

好我得到了你的问题。

在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) 

此外,如在官方文档,我不认为你不需要围绕'烧烤'或'见面'的单引号。

我希望这能解决您的问题。

+0

非常感谢你! –

+0

乐于帮助。 :) –

相关问题