Включить автоинкрементное поле для ответа JSON - PullRequest
1 голос
/ 09 января 2020

Новое для Django и Django Rest.

Я хочу изменить ответ JSON моего представления, чтобы он также возвращал идентификатор созданного пользователя.

Дело в том, что id - это целое число с автоматическим приращением, и поэтому я не знаю, как получить информацию, чтобы добавить ее в JSON.

. Любая помощь будет принята.

Спасибо.

models.py

class CustomUsers(AbstractUser):

    email = models.EmailField(unique=True)
    username = models.CharField(max_length=100)
    USERNAME_FIELD = 'email'

    class Meta:
        db_table = "custom_users"

serializers.py

class CustomUsersCreateSerializer(serializers.ModelSerializer):

    def create(self, validated_data):
        last_name = validated_data['last_name']
        first_name = validated_data['first_name']
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = USER(
            last_name=last_name,
            first_name=first_name,
            username=username,
            email=email,
        )
        user_obj.set_password(password)
        user_obj.save()
        return validated_data
    class Meta:
        model = USER
        fields = ('id', 'last_name', 'first_name', 'username', 'password', 'email')
        extra_kwargs = {'password': {'write_only': True, 'min_length': 10}}

views.py

class UserCreateAPIView(CreateAPIView):
    serializer_class = serializers.CustomUsersCreateSerializer
    queryset = CustomUsers.objects.all()

1 Ответ

2 голосов
/ 09 января 2020

Я обычно использую Model.objects.create() для добавления новой записи, но я думаю, что это то же самое, что и ваш способ использования save (), чтобы вы могли получить созданный идентификатор пользователя после сохранения:

def create(self, validated_data):
    last_name = validated_data['last_name']
    first_name = validated_data['first_name']
    username = validated_data['username']
    email = validated_data['email']
    password = validated_data['password']
    user_obj = User.objects.create(
        last_name=last_name,
        first_name=first_name,
        username=username,
        email=email,
    )
    user_obj.set_password(password)
    user_obj.save()
    validated_data['user_id'] = user_obj.id
    return validated_data
...