我有带有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中是否有任何内置选项?
我注意到串行器执行这种操作的速度并不快,有什么办法可以节省时间吗?诸如索引之类的东西?
预先感谢您的回复!