class SKUImageSerializer(serializers.ModelSerializer):
sku = serializers.PrimaryKeyRelatedField(queryset=SKU.objects.all())
# 序列化:主键
# 反序列化:主键
class Meta:
model = SKUImage
fields = [
'id',
'sku', # 它在这里作用于反序列化,不要上面的PrimaryKeyRelatedField说明时,作用于反序列化时自动添加queryset
'image'
]
sku = serializers.PrimaryKeyRelatedField()作用于序列化,当这个PrimaryKeyRelatedField要作用于反序列化时要说明query
set,当作用于反序列化时不写 sku = serializers.PrimaryKeyRelatedField(queryset=SKU.objects.all())也可以,会默认自动加上queryset说明。若涉及反序列化而不写queryset,只写序列化的sku = serializers.PrimaryKeyRelatedField()会报错:Relational field must provide a `queryset` argument, override `get_queryset`, or set read_only=`True`.显然用read_only=`True不满足反序列化需求,因此只能改写queryset。
前提:sku是外键,fields=['sku']中的sku要反序列化成sku_id,而外键sku是个对象,因此想要sku是id必须先保证这个对象的过滤集queryset