0

Я хочу изменить object.key к другому соответствующему значению, например:Change Key Object из Viewset Джанго

class SomeViewSet(ModelViewSet): 
    queryset = Some.objects.all() 
    serialize_class = SomeSerializer 
    .... 
    def get_queryset(self): 
     some_param = self.request.query_params.get("some_param", None) 
     if some_param: 
      for some in queryset: 
       some.fk_another_key = SomeAnother.objects.get(pk=some.fk_another_key.id) 

     return queryset 

Что я хочу изменить fk__pk на "объект Рк". Я использую rest-framework, а в некоторых случаях не могу объявить "depth" или "set object" в Serializer.

В настоящее время мой результат JSON это

{ 
    ... 
    keyX: "", 
    keyY: "", 
    some_another: 1 
    ... 
} 

И мне нужны некоторые, как этот

{ 
    ... 
    keyX: "", 
    keyY: "", 
    some_another: { 
     ... 
     valueX: "", 
     valueY: "" 
     ... 
    } 
} 

Спасибо.

+0

Вы должны изменить сериалайзер, чтобы сделать это. См. Документацию и вложенные сериализаторы в частности. –

+0

В Serializer у меня могут быть «параметры», и с этим изменяется «сериализатор»? – user3854612

+0

См. Здесь: http://www.django-rest-framework.org/api-guide/relations/#nested-relationships –

ответ

0

Правильный способ сделать это, чтобы изменить ваш сериалайзер так что some_another внешний ключ сериализации с помощью соответствующего «SomeAnother» сериалайзер

class SomeAnotherSerializer(serializers.HyperlinkedModelSerializer): 

    class Meta: 
     model = SomeAnother 
     fields = ('pk', 'valueX', 'valueY') 


class SomeSerializer(serializers.HyperlinkedModelSerializer): 

    some_another = SomeAnotherSerializer() 

    class Meta: 
     model = Some 
     fields = ('pk', 'keyX', 'keyY', 'some_another ') 
Смежные вопросы