2016-11-30 2 views
1

Ich habe Modell mit einem Feld ValidatorDjango Modell Validator funktioniert nicht auf erstellen

from django.db import models 
from django.core.validators import MinValueValidator, MaxValueValidator 

class MyModel(model.Model): 
    name = models.CharField() 
    size = models.IntegerField(validators=[MinValueValidator(1),MaxValueValidator(10)]) 

Der Validator arbeitet gut in dem django Admin-Panel, während ich versuche, den Wert einzugeben mehr als 10, es zeigt mir die Fehlermeldung 'Stellen Sie sicher, dass dieser Wert kleiner oder gleich 10' ist und nicht speichern zulassen.

Aber wenn ich in der Django-Shell versuche, funktioniert der Validator nicht, es erlaubt, den Datensatz zu speichern, ich weiß nicht, warum der Validator keine Fehlermeldung hier wirft.

Können Sie mir bitte vorschlagen, wenn ich etwas verpasst habe oder einen Fehler, den ich hier gemacht habe. Bitte helfen Sie mir, dieses Problem zu lösen, es wird sehr gut für mich sein, Danke im Voraus.

+0

Haben die folgenden Antworten Ihre Anfrage gelöst? Wenn ja, bitte upvote und akzeptieren. – user2722127

Antwort

2

Django Validierung ist meist auf Anwendungsebene Validierung und Überprüfung nicht auf DB-Ebene. Außerdem wird die Modellvalidierung nicht automatisch unter save/create des Modells ausgeführt. Wenn Sie Ihre Werte zu einem bestimmten Zeitpunkt in Ihrem Code überprüfen möchten, müssen Sie dies manuell tun.

Zum Beispiel:

from django.core.exceptions import ValidationError 
form app.models import MyModel 

instance = MyModel(name="Some Name", size=15) 
try: 
    instance.full_clean() 
except ValidationError: 
    # Do something when validation is not passing 
else: 
    # Validation is ok we will save the instance 
    instance.save() 

Weitere Informationen, die Sie bei Djangos Dokumentation sehen https://docs.djangoproject.com/en/1.10/ref/models/instances/#validating-objects

In Verwaltung automatisch funktioniert, weil alle Modellformen (ModelForm) werden Modellvalidierung neben Formularvalidierung auszuführen.

Wenn Sie Daten validieren müssen, weil sie von einer nicht vertrauenswürdigen Quelle stammen (Benutzereingabe), müssen Sie ModelForm s verwenden und das Modell nur speichern, wenn das Formular gültig ist.

Verwandte Themen