【发布时间】:2015-11-02 11:19:24
【问题描述】:
我遇到了序列化问题。我有一个对象的查询集,例如:
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)
【问题讨论】:
标签: django serialization django-rest-framework