Chcę zdefiniować własną procedurę sprawdzania poprawności dla określonego pola modelu Django. Chcę, aby komunikat o błędzie był wyświetlany w formularzu administratora, ale chcę, aby ta sama walidacja miała miejsce, jeśli encja jest zapisana przez własny kod Pythona. Czy można to zrobić bez naruszania zasady DRY?Sprawdzanie poprawności pola Django w modelu i administratora?
10
A
Odpowiedz
8
Jeśli chcesz sprawdzić poprawność pojedynczego pola, możesz write a validator dodać go do swojego pola modelu.
Walidator będzie uruchamiany dla pola, gdy zostanie wywołana metoda modelu full_clean
. Będzie on uruchamiany za każdym razem, gdy sprawdzana jest formuła modelu (w tym w administratorze Django), ale nie uruchomi się automatycznie po zapisaniu instancji modelu - należy ręcznie wywołać full_clean
w kodzie Pythona.
m = MyModel(x=20)
m.full_clean() # may raise ValidationError
m.save()
Jeśli chciał wymusić walidator do uruchomienia gdy model jest zapisywany, a następnie można zastąpić metodę zapisywania i nazywają full_clean
tam. Zwróć uwagę, że spowodowałoby to dwukrotne uruchomienie sprawdzania poprawności podczas używania formularzy modelu i administratora django.