Poszukuję sposobu właściwego przesłonięcia domyślnej metody .create()
serializatora ModelSerializer
w Django Rest Framework, aby poradzić sobie z dodatkowym parametrem.Django reszta ramy: nadpisuj create() w ModelSerializer przekazując dodatkowy parametr
W moim oryginalnym modelu Django właśnie przesłoniłem domyślną metodę zarządzania paramem 0123C. Teraz .save()
można wywołać także w ten sposób: .save(extra = 'foo')
.
muszę stworzyć ModelSerializer
mapowanie na tym oryginalnym modelu Django:
from OriginalModels.models import OriginalModel
from rest_framework import serializers
class OriginalModelSerializer(serializers.ModelSerializer):
# model fields
class Meta:
model = OriginalModel
Ale w ten sposób nie mogę przejść extra
param do modelu .save()
metody.
Jak mogę poprawnie przesłonić metodę .create()
mojej klasy OriginalModelSerializer
, aby uwzględnić (ostatecznie) ten param extra
?
Problem polega na tym, że "dodatkowy" parametr nie jest polem mojego 'OrginalModel'. O ile mi wiadomo, nie ma sposobu na dodanie pola do "ModelSerializer", jeśli nie mapuje on do żadnego zwykłego pola 'OrginalModel' – floatingpurr
Musisz pop przed polem' foo' z 'validated_data' przed przekazaniem go do konstruktora modelu, wtedy ta odpowiedź powinna zadziałać. –