Sto cercando un modo per ovverride del metodo predefinito .create()
di un serializzatore ModelSerializer
in Django Rest Framework per gestire un parametro aggiuntivo.Django rest framework: override create() in ModelSerializer passando un parametro aggiuntivo
Nel mio modello Django originale ho appena scavalcato il metodo di default .save()
per la gestione di un parametro extra
. Ora .save()
può essere chiamato anche in questo modo: .save(extra = 'foo')
.
devo creare una mappatura ModelSerializer
su quel modello originale Django:
from OriginalModels.models import OriginalModel
from rest_framework import serializers
class OriginalModelSerializer(serializers.ModelSerializer):
# model fields
class Meta:
model = OriginalModel
Ma in questo modo non posso passare il extra
param alla .save()
metodo dei modelli.
In che modo è possibile ignorare correttamente il metodo della mia classe per prendere (eventualmente) questo parametro extra
?
Il problema è che il parametro "extra" non è un campo del mio 'OrginalModel'. Per quanto ne so, non c'è un modo per aggiungere un campo a un 'ModelSerializer' se non si esegue il mapping su qualsiasi campo regolare di' OrginalModel' – floatingpurr
È necessario inserire il campo 'foo' da' validated_data' prima di passarlo al costruttore del modello, quindi questa risposta dovrebbe funzionare. –