Django Rest Framework - запрос только экземпляров подкласса - PullRequest
0 голосов
/ 15 июня 2019

У меня есть следующая структура наследования модели:

class ModelA(models.Model):
    # some fields


class Type(models.Model):
    # fields common to all subtypes
    # ...

    # and a ForeignKey relationship
    modelA = models.ForeignKey(ModelA)


class Subtype1(Type):
    # fields specific for this type

class Subtype2(Type):
    # fields specific for this type

Итак, как вы можете видеть.У меня есть эта структура наследования.Пока что я могу перечислить все Type экземпляров (независимо от их подтипов) сразу через следующее представление на основе классов в views.py:

class TypeList(generics.ListAPIView):
    serializer_class = TypeSerializer

    def get_queryset(self):
        pk = self.kwargs['pk']
        modelA = ModelA.objects.get(id=pk)
        return modelA.type_set.all()

Итак, что я делаю: представление получает идентификатор (упакованный в URL) экземпляра ModelA, чтобы он мог получить правильный экземпляр ModelA из базы данных.Позже мы возвращаем все Type экземпляров ModelA (потому что через отношение иностранных ключей он может получить доступ к своему набору Type объектов).Это работает очень хорошо.

Но я также хочу запросить типы подкласса.Как я могу это сделать?Когда я заменяю оператор возврата из предыдущего кода на return modelA.subtype1_set.all(), я получаю следующую ошибку:

AttributeError в / modelAs / 1 / объект 'ModelA' не имеет атрибута 'subtype1_set'

Это понятно для меня, потому что нет никакой связи между ModelA и Subtype1.Итак, как я могу запросить экземпляры подкласса?

...