Проверка формы Django с необязательным полем ForeignKey - PullRequest
1 голос
/ 11 мая 2010

Имея ModelFormSet, построенный с modelformset_factory и используя модель с необязательным ForeignKey, как я могу создать пустые (нулевые) ассоциации для проверки в этой форме?

Вот пример кода:

### 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 является необязательным ... но когда форма отправляется, она не проверяется.

Это нормальное поведение? Как я могу сделать это поле, чтобы пропустить необходимую проверку?

1 Ответ

5 голосов
/ 11 мая 2010

Попробуйте добавить blank = True к клиенту:

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

null связан с базой данных, пусто для проверки внешнего интерфейса.

...