django rest框架展开字段属性错误

hwamh0ep  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(254)

我的序列化程序中有展开字段。我发送请求api/drivers/?expand=tractors\uuuuu drivers\uuuuu driver并获取错误:“在尝试获取字段的值时获取attributeerror make 关于序列化程序 TractorSerializer . 序列化程序字段的名称可能不正确,并且与 TractorDriver 例如。原始异常文本为:“tractordriver”对象没有属性“make”
模型:

  1. class Tractor(BaseModel):
  2. ...
  3. make = models.CharField("Make", max_length=32)
  4. ...
  5. class TractorDriver(BaseModel):
  6. tractor = models.ForeignKey(
  7. Tractor,
  8. verbose_name="Tractor",
  9. on_delete=models.CASCADE,
  10. related_name="drivers",
  11. )
  12. driver = models.ForeignKey(
  13. Driver,
  14. verbose_name="Driver",
  15. on_delete=models.CASCADE,
  16. related_name="tractors",
  17. )
  18. ...

序列化程序:

  1. class DriverSerializer(BaseModelSerializer):
  2. class Meta:
  3. model = Driver
  4. expandable_fields = dict(
  5. ...
  6. tractors=dict(
  7. serializer="safety.api.serializers.TractorSerializer", many=True,
  8. ),
  9. ...
  10. class TractorDriverSerializer(BaseModelSerializer):
  11. class Meta:
  12. model = TractorDriver
  13. expandable_fields = dict(
  14. tractor=dict(serializer="safety.api.serializers.TractorSerializer", read_only=True),
  15. driver=dict(serializer="safety.api.serializers.DriverSerializer", read_only=True),
  16. )
  17. class TractorSerializer(BaseModelSerializer):
  18. class Meta:
  19. model = Tractor
  20. expandable_fields = dict(
  21. ...
  22. drivers=dict(
  23. serializer="safety.api.serializers.TractorDriverSerializer", many=True,
  24. ),
  25. ...

意见:

  1. class DriverStatusViewSet(BaseModelViewSet):
  2. queryset = DriverStatus.objects.all()
  3. serializer_class = DriverStatusSerializer
  4. class TractorViewSet(BaseModelViewSet):
  5. queryset = Tractor.objects.all()
  6. serializer_class = TractorSerializer
  7. class TractorDriverViewSet(BaseModelViewSet):
  8. queryset = TractorDriver.objects.all()
  9. serializer_class = TractorDriverSerializer
  10. ``` `TractorDriver` 示例没有 `make` 领域 `Tractor` 示例包含 `make` 领域我不明白它为什么要找我 `make` 野外 `TractorDriver` 例如。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题