Если я правильно понимаю вашу проблему, вы хотите создать Admin
, но хотите оставить Admin
user
* user_type
только для чтения.
Для этого у вас естьчтобы убедиться, что user_type
доступен только для чтения в указанном вами сериализаторе пользователя AdminSerializer
.Например, я пишу новый сериализатор:
class AdminUserSerializer(serializers.ModelSerializer):
class Meta:
model = models.User
fields = ('foo', 'bar', 'user_type')
read_only_fields = ('user_type',)
Теперь используйте его в своем AdminSerializer
:
class AdminSerializer(serializers.ModelSerializer):
user = AdminUserSerializer() # make sure user_type is read-only in whatever serializer you specify here
class Meta:
model = models.Admin
fields = ('user', 'first_name', 'last_name', 'dob', 'gender')
def create(self, validated_data):
user_data = validated_data.pop('user')
user = models.User.objects.create(**user_data, user_type=constants.Constants.ADMIN)
admin = models.Admin.objects.create(user=user, **validated_data)
return admin