【发布时间】:2020-03-09 12:20:44
【问题描述】:
这是我对 here 提出的这个问题的后续跟进。
我现在可以使用用户主键发布一个新的 AP 对象,并在 AP 序列化程序 user = UserIndexSerializer() 中注释此行之后:
邮递员请求:
{
"user":1,
"name":"Max AP 05"
}
但是我现在遇到的问题是初始的 UserIdexSerializer 变得无用。
此序列化程序确定要在 GET 请求中显示的字段,但结果是强加 POST 请求中所需的字段。 我想做的是:
- 仅使用用户 ID 发布新的 AP 对象
- 在 GET 请求期间显示 UserIndexSerializer 字段(first_name、 姓氏,但不是 ID)
我怎样才能做到这一点?
我找到并阅读了这个post。
我尝试使用不同的视图,一种用于列出我的模型,另一种用于创建新模型:
from rest_framework import serializers
from ..models.model_art_piece import AP
from .serializers_user import *
class APIndexSerializer(serializers.ModelSerializer):
user = UserIndexSerializer()
class Meta:
model = AP
fields = [
'id',
'user',
'name'
]
class APCreateSerializer(serializers.ModelSerializer):
user = UserIDSerializer()
class Meta:
model = AP
fields = [
'id',
'user',
'name'
]
def create(self, validated_data):
ap = AP.objects.create(**validated_data)
return ap
class APDetailsSerializer(serializers.ModelSerializer):
class Meta:
model = AP
fields = '__all__'
我还尝试创建不同的序列化程序:
from rest_framework import serializers
from ..models.model_user import User
class UserIndexSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = [
'first_name',
'last_name'
]
class UserIDSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = [
'id'
]
class UserDetailsSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
这根本不起作用,有人可以帮我解决这个问题吗?
【问题讨论】:
标签: python django serialization nested