Domanda

Come posso rendere i campi obbligatori non obbligatori quando un altro campo [associato] ha un certo valore?

Supponiamo che io abbia i seguenti modelli:

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

Quando salvo e la barra contiene un certo valore, vorrei che foo_date diventasse non obbligatorio. Come posso farlo? Grazie.

È stato utile?

Soluzione

T.Stone ha ragione. Ecco come lo fai con un modulo modello:

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

Altri suggerimenti

Penso che sarebbe solo una questione di impostare foo_barr su blank = True e quindi implementare il proprio modulo e la convalida personalizzata da utilizzare per il modello Admin. Vedi questa parte della documentazione - Aggiunta della convalida personalizzata all'amministratore

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top