Django Rest Framework使用动态字段序列化

gmap

我在序列化方面遇到问题。我有一个对象的查询集,例如:

uvs = UserVehicles.objects.all()

这些对象中有些过期了,有些没有过期。我想在序列化程序中有不同的字段,具体取决于到期信息。例如,我想从过期的对象中排除status和distance_travelled字段。最简单的方法是什么?我尝试了下一个代码,但是init方法中的self.object包含一个数组,因此它将删除所有对象的字段,而不仅仅是过期的对象。

serialized_data = UserVehicleSerializer(uvs, many=True).data

class UserVehicleSerializer(serializers.ModelSerializer):

    class Meta:
        model = UserVehicle
        fields = ('type', 'model', 'status', 'distance_travelled',)

    def __init__(self, *args, **kwargs):
        super(UserVehicleSerializer, self).__init__(*args, **kwargs)

        if self.object.is_expired:
            restricted = set(('distance_travelled', 'status',))
            for field_name in restricted:
                self.fields.pop(field_name)
一个辛格

我建议不要将业务逻辑放在序列化程序中。您可以为过期的车辆/对象创建一个单独的序列化器,为活动车辆创建一个单独的序列化器,然后在视图中选择正确的序列化器。这样,如果您的业务逻辑针对每种类型的车辆朝着不同的方向发展,则应该易于管理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Django Rest Framework中列出带有动态字段的序列化器

django-rest-framework用于序列化的不同字段

Django Rest Framework Choices字段序列化器

Django REST Framework序列化器字段必填= false

不同的字段类型序列化器 - Django Rest Framework

从Django Rest Framework序列化器中排除字段

Django REST Framework-序列化可选字段

Django Rest Framework-筛选序列化器字段

序列化器上的Django Rest Framework条件字段

Django Rest Framework:派生模型序列化器字段

Django Rest Framework-TaggableManager字段的反序列化

Django Rest Framework-如何序列化嵌套字段

Django Rest Framework序列化器-返回相关字段

Django Rest Framework 序列化自定义字段

嵌套序列化器字段 Django Rest Framework

如何使用Django Rest Framework对序列化字段进行排序

使用 Django Rest Framework 根据单个字段值序列化查询集

如何使用Django Rest Framework将url字段添加到序列化器

使用Django Rest Framework序列化程序发布到嵌套字段

如何使用与 Django Rest Framework 中的中间模型的多对多关系序列化附加字段?

Django Rest Framework-仅反序列化的序列化器字段

Django Rest Framework:对计算字段进行序列化/反序列化

是否可以在django-rest-framework序列化程序中动态更改字段名称?

在序列化器Django Rest Framework中使用@StaticMethods

使用Django-rest-framework序列化对象列表

翻译序列化 Django Rest Framework

如何在 Django REST Framework 序列化程序中获取相关字段的相关字段?

列出Django Rest Framework序列化程序中必填字段的名称(并忽略父字段)

在Django REST框架序列化程序中动态排除或包含字段