使用rest_framework.serializer时使用请求

时间:2016-09-30 06:49:21

标签: serialization django-rest-framework

我使用Django REST Framework,我有一个像这样的django模型类:

class Venue(models.Model):
    user=models.ForeignKey(User)

然后我想要序列化这个:

from rest_framework import serializers
import models

class VenueSerializer(serializers.ModelSerializer):

    class Meta:

        model=models.Venue
        fields=('id','user','is_current_user')

其中is_current_user是一个布尔值,不知怎的就像这样

def is_current_user(self):
    return self.request.user==self.user

我该怎么做?我是否在串行器中有请求?或者我应该在模型的某个地方做这个?

不太方便的选择是:

  • 以另一种方式将当前用户ID发送到客户端并进行比较,但之后我必须将每个模型的用户公开给客户端。
  • 在序列化后迭代json
  • 手动不使用序列化程序从查询集创建json

1 个答案:

答案 0 :(得分:1)

我建议使用SerializerMethodField

class VenueSerializer(serializers.ModelSerializer):
    class Meta:
        model=models.Venue
        fields=('id','user','is_current_user')

    def get_is_current_user(self, obj):
        return self.context['request'].user == obj.user