Django reste du cadre: remplacement de créer() dans ModelSerializer en passant un paramètre supplémentaire
Je suis à la recherche d'une façon de bien ovverride la valeur par défaut .create()
méthode de ModelSerializer
sérialiseur dans Django Repos Cadre pour traiter avec un paramètre supplémentaire.
Dans mon premier Django modèle que j'ai juste remplacé la valeur par défaut.save()
méthode pour la gestion d'un extra
param. Maintenant .save()
peut être appelé aussi de cette manière: .save(extra = 'foo')
.
J'ai créer un ModelSerializer
de cartographie sur l'origine de Django modèle:
from OriginalModels.models import OriginalModel
from rest_framework import serializers
class OriginalModelSerializer(serializers.ModelSerializer):
# model fields
class Meta:
model = OriginalModel
Mais de cette façon je ne peux pas passer le extra
param pour le modèle .save()
méthode.
Comment puis-je correctement remplacer la .create()
méthode de mon OriginalModelSerializer
classe pour prendre (enfin) ce extra
param compte?
OriginalL'auteur floatingpurr | 2015-06-04
Vous devez vous connecter pour publier un commentaire.
Hmm. cela pourrait ne pas être la réponse parfaite étant donné que je ne sais pas comment vous voulez passer cet "extra" (ie. est-il un champ supplémentaire dans une forme normalement, etc)
Ce que vous voudrez probablement faire est de simplement représenter foo comme un champ sur le sérialiseur. Ensuite, il sera présent dans
validated_data
danscreate
, alors vous pouvez fairecreate
faire quelque chose commeVous auriez probablement envie de regarder le défaut de mise en œuvre de créer pour certaines des autres choses qu'il fait (comme supprimer plusieurs-à-plusieurs liens, etc.).
OrginalModel
. Autant que je sache, il n'y a pas un moyen pour ajouter un champ à unModelSerializer
si elle ne correspond pas à un champ deOrginalModel
Vous avez besoin de la pop la
foo
champ devalidated_data
avant de le transmettre au modèle constructeur, alors cette réponse devrait fonctionner.OriginalL'auteur Alex T
Vous pouvez désormais le faire dans l'ensemble de vues (a jeté de l'utilisateur comme un bonus 😉 ):
De cette façon, le Sérialiseur peut rester générique, c'est à dire:
OriginalL'auteur davmor