/ / Django: due campi, uno valido - django, modelli django

Django: due campi, uno valido - django, modelli django

Ho due campi in un modello, ne voglio solo unocampo valido nel modulo di amministrazione. Se un campo è valido, l'altro non è possibile inserire dati o viceversa. Ma è necessario mettere i dati in uno dei due campi per il salvataggio.

È possibile?

Grazie!

risposte:

5 per risposta № 1

Se vuoi che questa convalida avvenga sul back-end, verrai convalidato in clean metodo del modulo. qualcosa come questo:

class MyAdminForm(forms.ModelForm):
def clean(self):
cd = self.cleaned_data
fields = [cd["field1"], cd["field2"]]
if all(fields):
raise ValidationError("Please enter one or the other, not both")
if not any(fields): #Means both are left empty
raise ValidationError("Please enter either field1 or field2, but not both")

return cd

Ecco la documentazione sull'uso dei moduli con admin di django

Se vuoi che la convalida avvenga sul frontend, piuttosto che sul modulo di invio, potresti prendere in considerazione l'idea di utilizzare una soluzione javascript per questo. Ecco una risposta per a soluzione javascript