2010-05-10 60 views
1

使用modelformset_factory構建的ModelFormSet並使用帶有可選ForeignKey的模型,如何使空(空)關聯在該窗體上進行驗證?使用可選的ForeignKey字段對Django Formset進行驗證

這裏是一個示例代碼:

### 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是可選的......但是當表單被提交時它不會被驗證。

這是正常的行爲嗎?我如何讓這個字段跳過需要的驗證?

回答

5

嘗試增加blank = True到cliente:

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

空的數據庫相關的,空白的是前端驗證。

+0

工程就像一個魅力。謝謝! – 2010-05-11 06:11:59

+0

不用擔心隊友。 – 2010-05-11 08:27:33