Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Python Django:';int';当视图集中存在不同的序列化程序时,对象不可iterable_Python_Django_Serialization_Nested - Fatal编程技术网

Python Django:';int';当视图集中存在不同的序列化程序时,对象不可iterable

Python Django:';int';当视图集中存在不同的序列化程序时,对象不可iterable,python,django,serialization,nested,Python,Django,Serialization,Nested,我在此端点上发出GET请求时遇到问题:/api/emptance/{hotel\u id}/。它应该返回特定酒店ID的空缺信息 在我的模式中,空缺模型包含以下属性: 酒店id作为外键 房间id作为外键 空缺为整数 作为整数出租 为了获得相关信息,我打算通过空缺视图集调用HotelDetailsSerializer,认为这可能比筛选空缺表更容易 根据URL中提供的hotel_id值,因为它将自动提供与特定酒店id相关的空缺收集 在http://localhost:8000/api/hotels

我在此端点上发出
GET
请求时遇到问题:
/api/emptance/{hotel\u id}/
。它应该返回特定酒店ID的空缺信息

在我的模式中,空缺模型包含以下属性:

  • 酒店id作为外键
  • 房间id作为外键
  • 空缺为整数
  • 作为整数出租
为了获得相关信息,我打算通过
空缺视图集
调用
HotelDetailsSerializer
,认为这可能比筛选空缺表更容易 根据URL中提供的
hotel_id
值,因为它将自动提供与特定酒店id相关的空缺收集

http://localhost:8000/api/hotels/1
(如下所示)提供了我需要的信息。但是,当我试图通过带有此端点的
空缺视图集
获得此响应时
http://localhost:8000/api/vacancies/1
我发现以下错误:

TypeError位于/api/expansions/1/
“int”对象不可编辑
那么,我试图做的一开始是可能的,还是有更好的方法或最佳实践可以在这里应用

谢谢你的回复

这是我的
空缺序列化程序
文件:

从rest\u框架导入序列化程序
from..models.model_空缺导入空缺
从.serializers\u文件室导入*
从.serializers\u酒店导入*
类VacancyIndexSerializer(serializers.ModelSerializer):
"""
列出数据库中所有模型的序列化程序
"""
房间id=RoomIndexSerializer(允许null=True)
类元:
型号=空缺
字段=[
“房间id”,
“酒店id”,
“空缺”,
“出租”
]
类VacancyDetailsSerializer(serializers.ModelSerializer):
"""
显示数据库中空缺模型详细信息的序列化程序
"""
房间id=RoomDetailsSerializer()
类元:
型号=空缺
字段=[
“房间id”,
“空缺”,
“出租”
]
类VacancyCreateSerializer(serializers.ModelSerializer):
"""
用于在DB中创建空缺模型的序列化程序
"""
类元:
型号=空缺
字段=[
“房间id”,
“酒店id”,
“空缺”,
“出租”
]
def创建(自我验证的_数据):
空缺=空缺.objects.create(**已验证的_数据)
退货
类VacancyUpdateSerializer(serializers.ModelSerializer):
"""
序列化程序声明要提供以更新空缺实例的字段。
"""
类元:
型号=空缺
字段=[
“房间id”,
“酒店id”,
“空缺”,
“出租”
]
它的
Viewset
中,我使用另一个
Serializer
作为
retrieve
类:

从rest\u框架导入视图集
from..models.model_空缺导入空缺
从..serializers.serializers\u导入*
来自..serializers.serializers\u酒店导入*
类VacancyViewSet(ViewSet.ModelViewSet):
"""
根据请求类型(GET、PUT等)调用各种序列化程序
"""
queryset=空缺.objects.order\u by('id'))
#将序列化程序映射到操作中
序列化程序\u类={
“列表”:VacancyIndexSerializer,
“检索”:HotelDetailsSerializer,
“创建”:VacancyCreateSerializer,
“更新”:VacancyUpdateSerializer,
“部分更新”:VacancyUpdateSerializer
}
#您的默认序列化程序
默认\u序列化程序\u类=VacancyIndexSerializer
def get_序列化程序_类(自身):
"""
方法来检测请求类型(GET、PUT等)并选择相应的序列化程序。
"""
返回self.serializer\u classes.get(self.action,self.default\u serializer\u class)
这是我的另一个
序列化程序

从rest\u框架导入序列化程序
来自..models.model_酒店进口酒店
从.serializers\u导入*
类HotelIndexSerializer(serializers.ModelSerializer):
"""
列出DB中所有酒店模型的序列化程序
"""
类元:
模型=酒店
字段=[
“id”,
“姓名”,
]
类HotelDetailsSerializer(serializers.ModelSerializer):
"""
显示DB中酒店模型详细信息的序列化程序
"""
空缺=真空排气干燥器(多个=真)
类元:
模型=酒店
字段=[
“空缺”
]
类HotelCreateSerializer(serializers.ModelSerializer):
"""
用于在DB中创建酒店模型的序列化程序
"""
类元:
模型=酒店
字段=[
“姓名”,
]
类HotelUpdateSerializer(serializers.ModelSerializer):
"""
序列化程序声明要提供的字段以更新Hotel实例。
"""
类元:
模型=酒店
字段=[
“姓名”,
]
当我请求
GET
on
http://localhost:8000/api/hotels/1
我得到:

{
“空缺”:[
{
“房间id”:{
“房间”:“第一”,
“名称”:“第一个”,
“说明”:“说明”
},
“空缺”:10,
“租用”:0
},
{
“房间id”:{
“房间”:“第二间”,
“名称”:“第二个”,
“说明”:“说明”
},
“空缺”:10,
“租用”:0
}
]
}

当为空缺模型配置酒店时,您不能强制
ModelViewset
返回酒店以执行
retretrieve
操作<