Ich benutze Django Rest Framework und habe ein HTML-Formular, das Daten an die Rest-API sendet. Ich mache einen serializer.is_valid check und save() auf die Anfrage Daten. In der Front-End-Form habe ich ein ID-Feld, das ein Fremdschlüssel im Modell des Serialisierers ist. Und wenn serializer.is_valid ausgeführt wird, wird ein Fehler ausgegeben, der besagt, dass das Fremdschlüsselobjekt fehlt. Um dies zu überwinden, versuche ich, die Foreign-Key-Objektinstanz unter Verwendung der ID aus dem Eingabe-HTML-Formular zu erhalten und sie in die Serializer-Daten einzufügen.Validierung eines Fremdschlüsselfelds in einem Serializer Django Rest Framework
Ich habe eine Definition validate_ in meinem Serialisierer geschrieben und gehe davon aus, dass es ausgeführt wird (gemäß diesem Tutorial - http://www.django-rest-framework.org/api-guide/serializers/#validation), wenn serializer.is_valid() ausgeführt wird. Aber diese Definition wird nicht ausgeführt. Schätze Hilfe.
class TeamViewSet(viewsets.ModelViewSet):
serializer_class = TeamSerializer
queryset = Team.objects.all()
def create(self, request, *args, **kwargs):
permission_classes = (
permissions.IsAuthenticated
)
serializer = self.get_serializer(data=request.data)
serializer.is_valid()
return Response(.....)
Serializer
class TeamSerializer(serializers.ModelSerializer):
class Meta:
model = Team
fields = ('id','name','description','leader')
def validate_leader(self, leader_id):
try:
data = Leaders.objects.get(id=leader_id)
except Exception as e:
raise ValidationError(....)
return data
Bitte fügen Sie den Code hinzu. –
@Rahul Gupta Hinzugefügt Code –
anstelle von 'außer Ausnahme als e:' können Sie 'Leaders.DoesNotExist' verwenden ie. Für jedes Modell können Sie 'Model.DoesNotExist' verwenden. –