2017-09-29 4 views
0

je veux django liste sérialiseur du nombre de filtrage (Modèle < -> < étranger -> étrangères (chef))django deux modèles sérialiseur du nombre de filtres

regarder mon modèle

class Test(models.Model): 
    item = CharField 
    title = CharField 

class TestChild(models.Model): 
    test = ForeignKey(Test) 
    child_title = CharField 

class TestChildType(model.Model): 
    child = ForeignKey(TestChild) 
    type = BooleanField 

test ChildType Modèle Type utilisation sur le terrain

filter(type=false).count() 
filter(type=true).count() 

testFalseCount à filtrer la valeur false testTrueCount en fil Tering vraie valeur

et que vous voulez sérialiseur

{ 
    item:'mouse', 
    title:'goood Mouse' 
    child:[ 
      { 
       child_title:'childGood' 
       testFalseCount:4 
       testTrueCount:3 
      }, 
      ... 
     ] 
} 

Répondre

0
from rest_framework import serializers 

class TestChildSerializer(serializers.ModelSerializer): 
    testFalseCount = serializers.SerializerMethodField() 
    testTrueCount = serializers.SerializerMethodField() 

    @staticmethod 
    def get_testFalseCount(obj): 
     return obj.filter(type=false).count() 

    @staticmethod 
    def get_testTrueCount(obj): 
     return obj.filter(type=true).count() 

    class Meta: 
     model = Test 

class TestSerializer(serializers.ModelSerializer): 
    child = serializers.SerializerMethodField() 

    @staticmethod 
    def get_child(obj): 
     return [TestChildSerializer(child).data for child in obj.testchild_set.all()] 

    class Meta: 
     model = Test