Django在序列化时从模型实例中过滤一个对象

时间:2018-08-01 15:24:47

标签: python django django-rest-framework

我有带有m2m字段的Django模型,我想自定义序列化程序,以便仅过滤所需的数据。代码显示如下。

models.py

class Example(models.Model):
    field = models.CharField(max_length=25)
    users = models.ManyToManyField(User)

serializers.py

class UserSerializer(serializers.ModelSerializer):
    def to_representation(self, instance):
        return {"""... processing User's fields..."""}

class ExampleSerializer(serializers.ModelSerialzier):
    def to_representation(self, instance):
        user = self.context
        result = {... some fields ...}
        if instance.field == "some_value":
            ### IN THIS CASE THERE ARE ONLY TWO USERS, NEVER MORE###
            result['users'] = UserSerializer(instance.users.exclude(id=user.id)[0]).data
        else:
            result['users'] = ...

views.py

ExampleSerializer(Example.objects.all(), many=True, context=user).data

不确定您还需要其他什么,但是随时问。

所以问题是,如果type是“ some_value”,我只想得到一个不是发起此调用的用户,它就可以正常工作,但是看起来很丑,我不确定在高负载下将足够快地执行。当然,我可以专门为这种情况编写另一个自定义序列化程序,但仍在寻找最佳解决方案。

python中是否有任何内置选项?

我注意到串行器执行这种操作的速度并不快,有什么办法可以节省时间吗?诸如索引之类的东西?

预先感谢您的回复!

0 个答案:

没有答案