簡體   English   中英

Django:我的代碼有什么問題?

[英]Django:What is wrong with my code?

這些是我的模型:

class war(models.Model):
    title = models.CharField(max_length=20)

class option(models.Model):
    warval =models.ForeignKey(war)
    value = models.CharField(max_length=10)

class warform(ModelForm):
    class Meta:
        model = war

class option_form(ModelForm):
    class Meta:
        model = option
    exclude = ('warval')

這是處理選項創建的視圖:

def warhandler(request,war_id):
    f=modelformset_factory(option,form=option_form)
    wobj=get_object_or_404(war,pk=war_id)
    if request.method == 'POST':
        formset = f(request.POST,queryset=option.objects.filter(warval=wobj))
        if formset.is_valid():
            formset.save()
            return HttpResponse("Saved!check your model")   
        else:
            return render_to_response("formset.html",RequestContext(request,{"set":formset}))
    else:
        formset = f(queryset=option.objects.filter(warval=wobj))
        print(formset)
        return render_to_response("formset.html",RequestContext(request,{"set":formset,"war":wobj}))

因此,當我向該視圖提交表單時,出現以下錯誤:

Exception Type: IntegrityError
Exception Value: hit_option.warval_id may not be NULL

我知道此錯誤是什么,為什么會出現,但如何刪除此錯誤?

如您所知,這是因為您沒有在任何地方設置外鍵值。 您可能要使用inlineformset_factory ,它將為您設置FK到父級war對象。

將warval設為非必填字段

class option(models.Model):
    warval =models.ForeignKey(war, null=True)
    value = models.CharField(max_length=10)

或在保存之前定義formset.warval,並設置默認值...

編輯:

在此處此處閱讀有關在表單上使用字段子集並進行保存的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM