2016-09-30 95 views
0

当我使用Django的REST框架和我有这样一个Django模型类:使用要求使用rest_framework.serializer

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

我会建议使用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