2 回答
TA贡献1865条经验 获得超7个赞
SerializerMethodField只能按设计读取。因此,这不仅仅是图像,个人资料上没有发布任何内容。
此外,如果在 GET 请求期间不存在配置文件,则创建该配置文件是一种糟糕的设计,因为通常,GET 请求应该是安全的并且不会改变应用程序的状态。
相反,您应该在用户创建期间创建配置文件。由于配置文件中只有一个字段要发布,因此对发布数据使用平面表示可能更简单、更有效。
这是你应该做的。
序列化程序/user.py
class UserSerializer(serializers.ModelSerializer):
profile = ProfileSerializer(read_only=True)
image = serializers.ImageField(write_only=True)
email = serializers.EmailField(
required=True,
validators=[UniqueValidator(queryset=User.objects.all())]
)
username = serializers.CharField(
max_length=32,
validators=[UniqueValidator(queryset=User.objects.all())]
)
password = serializers.CharField(min_length=6, write_only=True)
def create(self, validated_data):
user = User(email=validated_data['email'], username=validated_data['username'])
user.set_password(validated_data['password'])
user.save()
Profile.objects.create(user=user, image=validated_data['image')
return user
现在您可以将您的图像字段与其他用户字段一起发布
添加回答
举报