Ich habe gerade angefangen zu lernen Django Rest Framework und ich kann nicht verstehen, , warum DRF Model Feld Validierung vor Own Validation Ich habe ein Modell, das eine URLField und im Grunde alles, was ich hinzufügen möchte http: // oder https: // bevor es überprüft, so schrieb Methode benutzerdefinierte ValidierungWarum Model Feld Validierung passiert vor Validierung oder validate_ <field> heißt?
class ShortenerSerializer(serializers.ModelSerializer):
class Meta:
extra_kwargs = {
'count': {'read_only':True}
}
fields = ('id', 'url', 'short_url', 'count', 'created_at')
model = Shortener
def validate_url(self, url):
if not 'http://' in url and not 'https://' in url:
url = 'http://' + url
url_validate = URLValidator()
try:
url_validate(url)
except:
raise serializers.ValidationError("Please Enter a Valid URL")
return url
ich sogar die Validate Methode overide aber wieder ist es nach dem Modell der Feldüberprüfung genannt, wie Exception wirft. Ich denke, ich muss eine Methode außer Kraft setzen, aber keine Ahnung, welche man außer Kraft setzt.
Ich erhalte diese QueryDict Instanz unveränderlich zu vermeiden ist. Ich habe das getan. 'def run_validation (self, Daten): \t \t \t url = data.get ('url') \t \t \t wenn url: \t \t \t \t wenn nicht 'http: //' in URL und nicht‚https : //‘in url: \t \t \t \t url = 'http: //' + url \t \t \t \t data [ 'url'] = url \t \t \t \t pri nt (Daten) \t \t \t Rückgabe super(). run_validation (Daten) ' –
ah, hab es. habe meine Antwort bearbeitet, um die Methodennamen zu ändern. – arjun27
immer noch die gleiche QueryDict-Instanz ist unveränderlicher Fehler. Ich mache so 'self.initial_data [' url '] =' http: // '+ self.initial_data.get (' url ') ' –