Hel*_*lgi 4 django django-rest-framework django-rest-framework-gis
我有三个 Django 模型。
class Asset(models.Model):
name = models.CharField(max_length=255)
class Place(Asset):
location = PointField()
class Zone(Asset):
location = PolygonField()
Run Code Online (Sandbox Code Playgroud)
我想对地点和区域使用相同的端点。是否可以为每个请求决定使用哪个序列化器,例如我可以轻松检查请求的资产是一个地方还是一个区域?
我只对处理单个实例感兴趣,因此不需要处理 ListView 等。
您可以重写视图中的get_serializer_class方法并添加用于决定正确序列化器的逻辑。
根据DRF 文档:
get_serializer_class(self)返回应用于序列化器的类。默认返回serializer_class属性。
可以被重写以提供动态行为,例如使用不同的序列化器进行读写操作,或者为不同类型的用户提供不同的序列化器。
代码:
class MyView(..):
...
def get_serializer_class(self):
if asset == place: # here add the logic to decide the asset type
return PlaceSerializer
return ZoneSerializer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3336 次 |
| 最近记录: |