2016-06-12 16 views
1

私はdjango restフレームワークを使用しており、残りのAPIにデータを送信するhtmlフォームを使用しています。私は、シリアル化を行っています.is_validチェックとsave()要求データです。 フロントエンドのフォームには、シリアライザのモデルの外部キーであるIDフィールドがあります。 serializer.is_validが実行されると、外部キーオブジェクトが見つからないというエラーがスローされます。これを克服するために、私は入力HTMLフォームからのIDを使用して外部キーオブジェクトインスタンスを取得し、シリアライザデータに挿入しようとしています。シリアライザで外部キーフィールドを検証するdjango rest framework

serializerに定義validate_を書いてあり、serializer.is_valid()が実行されたときに(このチュートリアルの通り - http://www.django-rest-framework.org/api-guide/serializers/#validation)実行すると仮定しています。しかし、この定義は実行されていません。ヘルプを感謝します。

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(.....) 

シリアライザ

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 
+0

コードを追加してください。 –

+0

@Rahul Gupta 'Exception as e:'の代わりにコード –

+1

を追加しました。あなたは 'Leaders.DoesNotExist'を使うことができます。どのモデルであれ、 'Model.DoesNotExist'を使うことができます。 –

答えて

1

私は今、それを得ます。フィールドが要求データに含まれていない場合、validateメソッドは実行されません。 フィールドをリクエストデータに含めた後、そのフィールドのvalidateメソッドが実行されています。

+0

コードを共有できますか? –

関連する問題