gpt4 book ai didi

django - 有条件地选择序列化程序

转载 作者:行者123 更新时间:2023-12-04 02:12:37 26 4
gpt4 key购买 nike

我有三个 Django 模型。

class Asset(models.Model):
name = models.CharField(max_length=255)


class Place(Asset):
location = PointField()


class Zone(Asset):
location = PolygonField()

我想对 Place 和 Zone 使用相同的端点。
是否可以为每个请求决定使用哪个序列化程序,例如我可以轻松检查请求的 Assets 是地点还是区域?

我只对处理单个实例感兴趣,因此不需要处理 ListView 等。

最佳答案

您可以 覆盖 get_serializer_class 方法 在您的 View 中添加用于确定正确序列化程序的逻辑。

根据 DRF docs:

get_serializer_class(self)

Returns the class that should be used for the serializer. Defaults to returning the serializer_class attribute.

May be overridden to provide dynamic behavior, such as using different serializers for read and write operations, or providing different serializers to different types of users.



代码:
class MyView(..):
...

def get_serializer_class(self):
if asset == place: # here add the logic to decide the asset type
return PlaceSerializer
return ZoneSerializer

关于django - 有条件地选择序列化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com