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
現在您可以將您的圖像字段與其他用戶字段一起發布
添加回答
舉報
