如何筛选在Django的REST框架多个串行

如何筛选在Django的REST框架多个串行

问题描述:

我jush具有两个字段一个车型,一个是后,花药是有关Django的用户model.like这是一个外键:如何筛选在Django的REST框架多个串行

from django.contrib.auth.models import User 

class Post(models.Model): 
    post = models.CharField(max_length=20) 
    author = models.ForeignKey(User, related_name='posts') 

现在我definde一个用户序列化器约束邮政,就像这样:

class PostSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Post 
     fields = ('id', 'post', 'author') 

class UserSerialzier(serializers.ModelSerializer): 

    posts = PostSerializer() 

    class Meta: 
     model = get_user_model() 
     fields = ('id', 'username', 'snippets', 'posts') 

我只想返回一个包含用户数据和发布数据的json。但是,我希望得到这个职位数据,由条件,不就是过滤所有的POST数据,我的看法是这样的:

class UserDetail(generics.RetrieveAPIView): 

    serializer_class = HomeSerializer 

    def get_queryset(self): 
     post_set = self.request.user.posts.filter(post='python') 
     query_set = User.objects.filter(posts=post_set, username='admin') 
     return query_set 

我希望得到的结果是:

{ 
    "id": 1, 
    "username": "rsj217", 
    "posts": [ 
     { 
      "id": 1, 
      "post": "python", 
      "author": { 
       "id": 1, 
       "username": "rsj217", 
      } 
     }, 
     { 
      "id": 2, 
      "post": "python", 
      "author": { 
       "id": 1, 
       "username": "rsj217", 
      } 
     } 
    ] 
} 

但实际上,我得到这样的结果:

{ 
    "id": 1, 
    "username": "rsj217", 
    "posts": [ 
     { 
      "id": 1, 
      "post": "python", 
      "author": { 
       "id": 1, 
       "username": "rsj217", 
      } 
     }, 
     { 
      "id": 2, 
      "post": "python", 
      "author": { 
       "id": 1, 
       "username": "rsj217", 
      } 
     }, 
     { 
      "id": 3, 
      "post": "ruby", 
      "author": { 
       "id": 1, 
       "username": "rsj217", 
      } 
     } 
    ] 
} 

我无法过滤后栏“红宝石”? ,我不知道去哪里

我认为你检索你的查询集的方式是错误的。试试看这个:

query_set = User.objects.filter(post__in=post_set, username='admin') 
+0

我的模型是'author = models.ForeignKey(User,related_name ='posts')','related_name'是'posts'。当我更改post_set时,它不起作用。 – user3336385 2014-09-04 01:48:04