【发布时间】:2015-03-13 14:05:25
【问题描述】:
所以我有以下结构:
ClientFile 属于所有者(类名 = 联系人)。 我正在尝试使用 API 创建一个 Clientfile。该请求包含以下数据:
{
name: "Hello!"
owner: {
id: 1,
first_name: "Charlie",
last_name: "Watson"
}
}
我根据我的结构创建了序列化程序。希望这个 API 调用会创建一个名为“Hello!”的客户端文件。和联系人 id 1 作为所有者:
class ContactSerializer(serializers.ModelSerializer):
class Meta:
model = Contact
fields = (
'id',
'first_name',
'last_name',
)
class ClientfileSerializer(serializers.ModelSerializer):
owner = ContactSerializer(read_only=False)
class Meta():
model = Clientfile
fields = (
'id',
'name',
'owner',
)
def create(self, validated_data):
owner = Contact.objects.get(pk=validated_data['owner']['id'])
我确实进入了 create 方法。但是,我需要的唯一字段 (['owner']['id']) 无法访问。如果我这样做 print ['owner']['first_name'] 它确实会返回“查理”。但是由于某些原因,该 ID 似乎无法访问...
发生这种情况的任何原因?我错过了什么吗? (我是 Django 新手)
解决方案:刚刚发现 ID 没有显示在首位的原因是因为我必须在这样的字段中声明它:希望这会有所帮助。
class ContactSerializer(serializers.ModelSerializer):
id = serializers.IntegerField() # ← Here
class Meta:
model = Contact
fields = (
'id',
'first_name',
'last_name',
)
【问题讨论】:
标签: python django django-rest-framework