DRf, поле внешнего ключа для разбивки на страницы - PullRequest
0 голосов
/ 21 сентября 2019

Я хочу сделать что-то вроде ниже, но код, поскольку он неэффективен,

Как я могу вернуть постраничный ответ связанного объекта?

class Bar(models.Model):
    pass

class Foo(models.Model):

    bar = models.ForeignKey('bar')




foo_id = request.data.get('foo_id')
foos = Foo.objects.get(id=foo_id)

bars = [
    foo.bar
    in
    foo
    for
    foos
]


page = self.paginate_queryset(bars)
serializer = BarSerializer(page, many=True)

return self.get_paginated_response(serializer.data)

1 Ответ

0 голосов
/ 21 сентября 2019

На самом деле я нашел ответ здесь https://stackoverflow.com/a/37657376/433570

Идея в том, что вы сглаживаете вложенный объект

class FooSerializer():
    bar = BarSerializer()

    def to_representation(self, obj):
        """Move fields from profile to user representation."""
        representation = super().to_representation(obj)
        profile_representation = representation.pop('bar')
        for key in profile_representation:
            representation[key] = profile_representation[key]

        return representation
...