Python django在序列化时从模型实例筛选一个对象

Python django在序列化时从模型实例筛选一个对象,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有一个带有m2m字段的django模型,我想定制序列化程序,以便只过滤所需的数据。代码如下所示 models.py: class Example(models.Model): field = models.CharField(max_length=25) users = models.ManyToManyField(User) class UserSerializer(serializers.ModelSerializer): def to_representatio

我有一个带有m2m字段的django模型,我想定制序列化程序,以便只过滤所需的数据。代码如下所示

models.py

class Example(models.Model):
    field = models.CharField(max_length=25)
    users = models.ManyToManyField(User)
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'] = ...
ExampleSerializer(Example.objects.all(), many=True, context=user).data
serializers.py

class Example(models.Model):
    field = models.CharField(max_length=25)
    users = models.ManyToManyField(User)
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'] = ...
ExampleSerializer(Example.objects.all(), many=True, context=user).data
views.py

class Example(models.Model):
    field = models.CharField(max_length=25)
    users = models.ManyToManyField(User)
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'] = ...
ExampleSerializer(Example.objects.all(), many=True, context=user).data
我不确定你还需要什么,但请随便问

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

python中有内置选项吗

我注意到,对于这样的操作,序列化程序并不是很快,有什么方法可以节省时间吗?像索引之类的东西


提前感谢您的回复

type
是python内置的。它不应该是
“some value”
@HåkenLid type是自定义名称字段,在我的模型中名称不同,但感谢您的评论