Pregunta

¿Cómo puedo hacer que los campos obligatorios no sean obligatorios cuando otro campo [asociado] tiene un cierto valor?

Supongamos que tengo los siguientes modelos:

class foo(models.Model):
    bar = models.CharField(max_length=200)
    foo_date = models.DateTimeField()

Cuando guardo, y la barra contiene un cierto valor, me gustaría que foo_date no sea obligatorio. ¿Cómo logro eso? Gracias.

¿Fue útil?

Solución

T.Stone tiene razón. Así es como lo haces con un formulario modelo:

class foo(models.Model):
    bar = models.CharField(max_length=200)
    foo_date = models.DateTimeField()

class ClientAdmin( MyModelAdmin ):
    form = FooModelForm

class FooModelForm( forms.ModelForm ):

    def clean(self):
        cleaned_data = self.cleaned_data
        if cleaned_data.get("bar") == 'some_val' and not cleaned_data.get('foo_date'):
            msg = 'Field Foo Date is mandatory when bar is some_val'
            self._errors[field] = ErrorList([msg])
            del cleaned_data[field]
        return cleaned_data

http://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other-other

Otros consejos

Creo que solo sería cuestión de configurar foo_barr en blank = True, y luego implementar su propio formulario y validación personalizada para que lo use el modelo Admin. Consulte esta parte de la documentación: Agregar validación personalizada a admin

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top