Pergunta

Como posso fazer campos obrigatórios não-obrigatório quando outro campo [associado] tem um determinado valor?

Vamos supor que eu tenho os seguintes modelos:

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

Quando eu salvar e bar contém um determinado valor, eu gostaria foo_date para se tornar não-obrigatório. Como faço para conseguir isso? Obrigado.

Foi útil?

Solução

T.Stone é certo. Isto é como você fazê-lo com um Formulário 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

Outras dicas

Eu acho que seria apenas uma questão de ajuste foo_barr em branco = True, e em seguida, implementar o seu próprio formulário e validação personalizada para o modelo de administração para uso. Veja esta parte da documentação - Adicionando personalizado validação para admin

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top