我有一个表单,当我用数据提交它时引发内部服务器错误
它说这是由于完整性错误:
IntegrityError at /cookbook/createrecipe/
(1048, "Column 'original_cookbook_id' cannot be null")
奇怪的是我没有列 original_cookbook_id - 我所拥有的是 original_cookbook,它是食谱模型的外键
这是给出错误的视图:
def createrecipe(request):
        print "entering createrecipeview"
        if request.method == 'POST':
            print "form is a post"
            form = RecipeForm(request.POST)
            print form.errors
            if form.is_valid():
                print "form is valid"
                form = RecipeForm(initial = {'original_cookbook' : request.user.cookbooks.all()[0]})// this is where the error is being thrown
                form.save()
                t = loader.get_template('cookbook/create_form.html')
                c = RequestContext(request, {
                'form': form,
                })
                data = {
                'replace': True,
                'form': t.render(c),
                'success': True,
                }
                json = simplejson.dumps(data)
                return HttpResponse(json, mimetype='text/plain')
            else:
                print "form is invalid"
                form = RecipeForm(request.POST)
                t = loader.get_template('cookbook/create_form.html')
                c = RequestContext(request, {
                    'form':form,
                })
                data ={
                    'form': t.render(c),
                    'success': False,
                }
                json = simplejson.dumps(data)
                return HttpResponse(json, mimetype='text/plain')
我想我可能以错误的方式声明 original_cookbook
其他任何人都有将_id附加到外键的经验/知道我如何能够解决这个问题
多谢
凯蒂
更新
这是我的javascript函数
<script type="text/javascript"> 
$(document).ready(function(){
    function hijack() {
        var form = $('form#createrecipeform');
        form.each (function(){
            this.reset();
            });
        form.submit(function(e) {
            e.preventDefault();
            console.log('ajax form submission function called successfully.');
            //form = $(this);
            console.log(form)
            var serialized_form = form.serialize();
            $.ajax({ type: "POST", 
                url: $(this).attr('action'),
                data: serialized_form, 
                success: (function(data) { 
                    console.log('ajax success function called successfully.');
                    data = $.parseJSON(data);
                    if (data.success) {
                        console.log('success');
                        //right now it is logging success to 
                        //console but nothing else is happening
                        //what else should happen on data success?
                    } else {        
                        console.log('failure');
                        var newForm = data.form;
                        form.replaceWith(newForm);
                        hijack();
                    }
                })
            });
            return false;
        });
    };
    hijack();
});
</script>