Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 将自动增量字段包含到JSON响应中_Django_Django Rest Framework - Fatal编程技术网

Django 将自动增量字段包含到JSON响应中

Django 将自动增量字段包含到JSON响应中,django,django-rest-framework,Django,Django Rest Framework,新的Django和Django休息 我希望修改视图的JSON返回响应,以便它也返回所创建用户的id 问题是,id是一个自动递增的整数,因此我不知道如何检索信息以将其添加到JSON 任何帮助都将不胜感激 谢谢 型号.py class CustomUsers(AbstractUser): email = models.EmailField(unique=True) username = models.CharField(max_length=100) USERNAME_FI

新的Django和Django休息

我希望修改视图的JSON返回响应,以便它也返回所创建用户的id

问题是,id是一个自动递增的整数,因此我不知道如何检索信息以将其添加到JSON

任何帮助都将不胜感激

谢谢

型号.py

class CustomUsers(AbstractUser):

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

    class Meta:
        db_table = "custom_users"
序列化程序.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}}
class UserCreateAPIView(CreateAPIView):
    serializer_class = serializers.CustomUsersCreateSerializer
    queryset = CustomUsers.objects.all()
视图.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}}
class UserCreateAPIView(CreateAPIView):
    serializer_class = serializers.CustomUsersCreateSerializer
    queryset = CustomUsers.objects.all()

我通常使用
Model.objects.create()
来添加新记录,但我认为这与您使用save()的方式相同,因此您可以在保存后获得创建的用户id:

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