Python django在序列化时从模型实例筛选一个对象
我有一个带有m2m字段的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
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是自定义名称字段,在我的模型中名称不同,但感谢您的评论