django - 在 JSON 响应中包含自动增量字段
问题描述
Django 和 Django Rest 的新手。
我正在寻找修改我的视图的 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}}
视图.py
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
推荐阅读
- linux - 复制目录结构,只触摸复制的文件
- docker - Docker 和 Docker 桌面有什么区别?
- sql - 使用 SQL IN 子句选择特定数字
- angular - 如何连接嵌套在另一个 Observable 中的多个 Observable 集合
- ios - WebRTC 的 XCFramework 更新后的任何 iOS 设备构建错误
- javascript - Java/JS 中的字符编码问题,字段中带有“é”字符
- python - MQTT 客户端断开连接
- django - 在 django-simple-jwt 包中,如何根据不同的签名算法和密钥有条件地验证密码?
- gerrit - How and When to use Follow Up feature of Gerrit efficiently?
- java - 如何在 Spring Boot 中使端点初始化异步?