Django 将自动增量字段包含到JSON响应中
新的Django和Django休息 我希望修改视图的JSON返回响应,以便它也返回所创建用户的id 问题是,id是一个自动递增的整数,因此我不知道如何检索信息以将其添加到JSON 任何帮助都将不胜感激 谢谢 型号.pyDjango 将自动增量字段包含到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
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