使用可选的ForeignKey字段进行Django Formset验证

Cam*_*pka 1 django django-models django-forms django-validation

ModelFormSet内置modelformset_factory和使用模型与可选ForeignKey的,我怎样才能使空(NULL)协会这种形式的验证?

这是一个示例代码:

### 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')
Run Code Online (Sandbox Code Playgroud)

在我的模板中,我只是调用呈现组合字段的{{form.cliente}}方法,但是,我希望能够选择一个空的(标记为"------")值,作为FK是可选的......但是当表单被提交时,它不会验证.

这是正常的行为吗?如何使此字段跳过所需的验证?

Jos*_*ogi 5

尝试添加blank = True到cliente:

cliente = models.ForeignKey(Cliente, null = True, blank = True)
Run Code Online (Sandbox Code Playgroud)

null与数据库相关,空白用于前端验证.