1

オプションのForeignKeyを使用してモデルを構築および使用している場合、そのフォームで検証するために空の(null)関連付けを作成するにはどうすればよいですかModelFormSetmodelformset_factory

サンプルコードは次のとおりです。

### model
class Prueba(models.Model):
    cliente = models.ForeignKey(Cliente, null = True)
    valor = models.CharField(max_length = 20)

### view

def test(request):
    PruebaFormSet = modelformset_factory(model = Prueba, extra = 1)
    if request.method == 'GET':
        formset = PruebaFormSet()
        return render_to_response('tpls/test.html', {'formset' : formset},
                                  context_instance = RequestContext(request))
    else:
        formset = PruebaFormSet(request.POST)
        # dumb tests, just to know if validating
        if formset.is_valid():
            return HttpResponse('0')
        else:
            return HttpResponse('1')

私のテンプレートでは、コンボフィールドをレンダリングする{{form.cliente}}メソッドを呼び出していますが、空の(「------」というラベルの付いた)値を選択できるようにしたいと思います。 FKはオプションです...ただし、フォームが送信されると、検証されません。

これは正常な動作ですか?このフィールドを作成して、必要な検証をスキップするにはどうすればよいですか?

4

1 に答える 1

5

クライアントに追加blank = Trueしてみてください:

cliente = models.ForeignKey(Cliente, null = True, blank = True)

nullはデータベース関連、空白はフロントエンド検証用です。

于 2010-05-10T22:01:12.897 に答える