使用 Djoser 创建相关模型
Create related model with Djoser
我正在尝试覆盖 Django 中的默认用户创建。我正在使用 Django Rest Framework 和 Djoser。我在这里找到了很好的实施技巧:
但我有自定义配置文件模型,名为:与我的自定义用户模型具有 OneToOneField 关系的 Userprofile。
这是我的序列化程序:
class UserRegistrationSerializer(serializers.ModelSerializer):
usr_profile = UserprofileSerializer()
email = serializers.CharField()
password = serializers.CharField(
write_only=True,
style={'input_type': 'password'}
)
class Meta:
model = get_user_model()
fields = ('email', 'password', 'usr_profile')
当我尝试向 /auth/users/ endpoint 发出以下 POST 请求时:
{
"email": "adnan@test115.se",
"password": "xxxxxx",
"usr_profile": {
"first_name": "adnan",
"last_name": "erkoc",
"cell_no": "23233"
},
}
我不断收到错误消息,提示 User.profile 必须是 Userprofile 实例。
这个问题与 Djoser 无关,而是与 DRF 本身有关。
您可以在 DRF 文档中找到答案
class UserRegistrationSerializer(serializers.ModelSerializer):
usr_profile = UserprofileSerializer()
email = serializers.CharField()
password = serializers.CharField(
write_only=True,
style={'input_type': 'password'}
)
class Meta:
model = get_user_model()
fields = ('email', 'password', 'usr_profile')
def create(self, validated_data):
usr_profile = validated_data.pop('usr_profile')
user = UserModel.objects.create(**validated_data)
UserProfile.objects.create(user=user, **usr_profile)
return album
我正在尝试覆盖 Django 中的默认用户创建。我正在使用 Django Rest Framework 和 Djoser。我在这里找到了很好的实施技巧:
但我有自定义配置文件模型,名为:与我的自定义用户模型具有 OneToOneField 关系的 Userprofile。
这是我的序列化程序:
class UserRegistrationSerializer(serializers.ModelSerializer):
usr_profile = UserprofileSerializer()
email = serializers.CharField()
password = serializers.CharField(
write_only=True,
style={'input_type': 'password'}
)
class Meta:
model = get_user_model()
fields = ('email', 'password', 'usr_profile')
当我尝试向 /auth/users/ endpoint 发出以下 POST 请求时:
{
"email": "adnan@test115.se",
"password": "xxxxxx",
"usr_profile": {
"first_name": "adnan",
"last_name": "erkoc",
"cell_no": "23233"
},
}
我不断收到错误消息,提示 User.profile 必须是 Userprofile 实例。
这个问题与 Djoser 无关,而是与 DRF 本身有关。
您可以在 DRF 文档中找到答案
class UserRegistrationSerializer(serializers.ModelSerializer):
usr_profile = UserprofileSerializer()
email = serializers.CharField()
password = serializers.CharField(
write_only=True,
style={'input_type': 'password'}
)
class Meta:
model = get_user_model()
fields = ('email', 'password', 'usr_profile')
def create(self, validated_data):
usr_profile = validated_data.pop('usr_profile')
user = UserModel.objects.create(**validated_data)
UserProfile.objects.create(user=user, **usr_profile)
return album