Django 使用两个用户配置文件模型注册 api
Django register api with two User profile models
我正在尝试创建用户,其中用户模型有两个用户配置文件,例如师生。在创建用户时,我也想在教师或学生配置文件中创建用户实例。
这是我的序列化器 类:
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = ('id', 'user_id')
class TeacherSerializer(serializers.ModelSerializer):
class Meta:
model = Teacher
fields = ('id', 'user_id')
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = (
'id',
'username',
'password',
'email',
'user_type'
)
extra_kwargs = {
'password': {'write_only': True},
}
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
return user
这是自定义注册视图:
class CreateUserView(CreateAPIView):
model = User
permission_classes = [
permissions.AllowAny # Or anon users can't register
]
serializer_class = UserSerializer
现在,我可以创建用户,但是根据 user_type
参数创建用户配置文件对我来说是一个挑战。
因此,如果 user_type
是 student,我还需要为 StudentProfile 创建 User 实例(学生资料中的新行 table)
也许你可以添加简单的 if 条件?:
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
if validated_data('user_type') == 'student':
Student.objects.create(user_id=user.id)
else:
Teacher.objects.create(user_id=user.id)
return user
我正在尝试创建用户,其中用户模型有两个用户配置文件,例如师生。在创建用户时,我也想在教师或学生配置文件中创建用户实例。
这是我的序列化器 类:
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = ('id', 'user_id')
class TeacherSerializer(serializers.ModelSerializer):
class Meta:
model = Teacher
fields = ('id', 'user_id')
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = (
'id',
'username',
'password',
'email',
'user_type'
)
extra_kwargs = {
'password': {'write_only': True},
}
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
return user
这是自定义注册视图:
class CreateUserView(CreateAPIView):
model = User
permission_classes = [
permissions.AllowAny # Or anon users can't register
]
serializer_class = UserSerializer
现在,我可以创建用户,但是根据 user_type
参数创建用户配置文件对我来说是一个挑战。
因此,如果 user_type
是 student,我还需要为 StudentProfile 创建 User 实例(学生资料中的新行 table)
也许你可以添加简单的 if 条件?:
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
if validated_data('user_type') == 'student':
Student.objects.create(user_id=user.id)
else:
Teacher.objects.create(user_id=user.id)
return user