2014-09-03 45 views
0

我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", 
      } 
     } 
    ] 
} 

我無法過濾後欄「紅寶石」? ,我不知道去哪裏

回答

0

我認爲你檢索你的查詢集的方式是錯誤的。試試看這個:

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