我一直在处理RoutePrice模型,并尝试在嵌套序列化程序中序列化数据,在嵌套序列化程序之前,它可以正常工作,但在嵌套序列化程序之后,我得到了类型错误。这是我迄今为止尝试过的模型和序列化程序
class RoutePrice(BaseModel):
bus_company_route = models.ForeignKey(BusCompanyRoute, on_delete=models.PROTECT)
bus_type = models.ForeignKey(Category, on_delete=models.PROTECT)
seat_price_for_travel_agent = AmountField()
seat_price_for_user = AmountField()
seat_price_for_foreigner = AmountField(null=True, blank=True)
class Meta:
default_permissions = ()
verbose_name = 'Route Price'
verbose_name_plural = 'Route Prices'
constraints = [
models.UniqueConstraint(
fields=['bus_company_route', 'bus_type'],
name='unique_route_price'
)
]
下面是如何序列化我的数据
class AddRoutePriceSerializers(serializers.ModelSerializer):
class Meta:
model = RoutePrice
fields = (
'bus_type',
'seat_price_for_travel_agent',
'seat_price_for_user',
'seat_price_for_foreigner',
)
class AddMultipleRoutePriceSerializers(serializers.Serializer):
data = AddRoutePriceSerializers(many=True)
我的逻辑在usecases.py和views.py中
#usecases.py
class AddRoutePriceUseCases(BaseUseCase):
def __init__(self,
serializer: AddMultipleRoutePriceSerializers,
bus_company_route: BusCompanyRoute):
self._serializer = serializer
self._data = serializer.validated_data
self._bus_company_route = bus_company_route
def execute(self):
self._factory()
def _factory(self):
print(self._data)
self.route_price = RoutePrice(**self._data, bus_company_route=self._bus_company_route)
try:
self.route_price.full_clean()
self.route_price.save()
except DjangoValidationError as e:
raise ValidationError(e.message_dict)
#视野
class AddRoutePriceView(generics.CreateAPIView):
"""
Use this end-point to add route price to specific bus company route
"""
serializer_class = route_price_serializers.AddMultipleRoutePriceSerializers
def get_bus_company_route(self):
return GetBusCompanyRouteUseCase(
bus_company_route_id=self.kwargs.get(
'bus_company_route_id'
)
).execute()
def perform_create(self, serializer):
return AddRoutePriceUseCases(serializer=serializer,
bus_company_route=self.get_bus_company_route()
).execute()
我说路线时出错了
RoutePrice() got an unexpected keyword argument 'data'
嵌套序列化程序中有什么问题
目前没有回答
相关问题 更多 >
编程相关推荐