Frage

Wie kann ich Pflichtfelder nicht zwingend, wenn ein anderer [zugeordnet] Feld einen bestimmten Wert hat?

Nehmen wir an, ich habe die folgenden Modelle:

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

Wenn ich speichern und Leiste enthält einen bestimmten Wert, würde Ich mag foo_date nicht zwingend werden. Wie erreichen ich das? Danke.

War es hilfreich?

Lösung

T.Stone ist richtig. Dies ist, wie Sie es mit einem Modell-Formular tun:

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

Andere Tipps

Ich denke, es wäre nur eine Frage sein foo_barr der Einstellung leer = True, und dann Ihre eigene Form und benutzerdefinierte Validierung für das Admin-Modell der Umsetzung zu verwenden. Sehen Sie diesen Teil der Dokumentation - benutzerdefinierte Validierung Hinzufügen Admin

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top