我正在使用django rest框架並具有向其餘api發送數據的html表單。我正在對請求數據進行serializer.is_valid檢查並保存()。 在前端窗體中,我有一個ID字段,它是序列化程序模型中的外鍵。當serializer.is_valid運行時,它會拋出一個錯誤,指出外鍵對象丟失。爲了克服這個問題,我試圖從輸入html表單中獲取使用id的外鍵對象實例,並將其插入到序列化器數據中。驗證序列化程序中的外鍵字段django rest框架
我已經在我的序列化程序中寫了一個定義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:e:'你可以使用'Leaders.DoesNotExist'即。對於任何你可以使用'Model.DoesNotExist'的模型。 –