我有一个看起来像这样的非模型序列化器:
class NonModelSerializer(Serializer):
secret_number = IntegerField()
user = ???
def save(**kwargs):
... do something with the secret number and user ...
应该写些什么代替???
,以便我的序列化程序接受用户的ID,并在save()
方法中,我在user
字段中看到给定ID的用户?像是来自纯Django的ModelChoiceField
。
答案 0 :(得分:1)
您应该使用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
,但是您也可以通过save
访问self.validated_data
中的选定用户。