私は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
コードを追加してください。 –
@Rahul Gupta 'Exception as e:'の代わりにコード –
を追加しました。あなたは 'Leaders.DoesNotExist'を使うことができます。どのモデルであれ、 'Model.DoesNotExist'を使うことができます。 –