Umożliwia powiedzieć, że ma wzór w taki sposób:różne walidację DRF serializatora jednej metody żądania
class MyModel(models.Model):
first_field = models.CharField()
second_field = models.CharField()
oraz widok interfejsu API tak:
class MyModelDetailAPI(GenericAPIView):
serializer_class = MyModelSerializer
def patch(self, request, *args, **kwargs):
# Do the update
def post(self, request, *args, **kwargs):
# Do the post
first_field
jest pole, które dodaje się tylko w metodzie POST (i jest obowiązkowa), ale przy każdej aktualizacji użytkownik nie może zmienić jej wartości, dlatego pole w metodzie PATCH jest obowiązkowe , a nie.
Jak mogę napisać mój serializator, aby first_field
był wymagany na POST, ale nie jest wymagany na PATCH. Czy jest jakiś sposób dynamicznego ustawiania wymaganego pola, więc nadal mogę używać mechanizmu sprawdzania poprawności DRF? Jakiś rodzaj metody wywoływania weryfikatora na żądanie?
chcę coś takiego na przykład:
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = {
'POST': ['first_field']
'PATCH': []
}
Jeśli format danych nie jest taka sama, to nie to samo serializer. Po prostu utwórz dwa różne serializery (prawdopodobnie jeden dziedziczy drugi lub oba dziedziczą wspólną bazę). – spectras
Moje rozumienie serializers jest to, że są one przypuszczać, aby obsługiwać serializacji surowych danych do instancji modelu i od modelu przykład do surowych danych (JSON na przykład). Fakt, że łata jest to częściowa zmiana, można mieć wiele różnych permutacji wysłanego danych - to nie jest logiczne, aby mieć inną serializatora za permutacji. –
Co masz na myśli przez "permutację"? Obiekty nie są uporządkowane, więc ich zawartość nie może być permutowana. W każdym razie, chcesz tutaj dodać lub usunąć pole. Więc nie jest to ten sam format. – spectras