Django rest framework DRF-非模型序列化程序中的外键

Django rest framework DRF-非模型序列化程序中的外键,django-rest-framework,serialization,Django Rest Framework,Serialization,我有一个非模型序列化程序,如下所示: class NonModelSerializer(Serializer): secret_number = IntegerField() user = ??? def save(**kwargs): ... do something with the secret number and user ... 应该写什么来代替?以便我的序列化程序接受用户的ID,并且在save()方法中,我在user字段中看到给定ID的用

我有一个非模型序列化程序,如下所示:

class NonModelSerializer(Serializer):
    secret_number = IntegerField()
    user = ???

    def save(**kwargs):
        ... do something with the secret number and user ...

应该写什么来代替
以便我的序列化程序接受用户的ID,并且在
save()
方法中,我在
user
字段中看到给定ID的用户?类似于普通Django中的
modelcoocefield

您应该使用
PrimaryKeyRelatedField
,:

class NonModelSerializer(serializers.Serializer):

    user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
    secret_number = serializers.IntegerField()

    class Meta:
        fields = ('user', 'secret_number')

    def create(self, validated_data):
        print(self.validated_data)
    pass

    def update(self, instance, validated_data):
        pass
我建议您覆盖
create
update
而不是
save
,但是您也可以通过
self.validated\u data
save
中访问所选用户