Django Rest Framework-仅查询子类实例

时间:2019-06-15 11:53:04

标签: django inheritance subclass

我具有以下模型继承结构:

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中的以下基于类的视图一次列出 all views.py个实例(无论其子类型如何): / p>

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()

因此,我要做的是:视图获取ModelA实例的ID(包装在URL中),以便它可以从数据库获取正确的ModelA实例。稍后,我们返回Type的所有ModelA实例(因为通过外键关系,它可以访问其Type对象集)。效果很好。

但是我也想查询子类类型。我该怎么做? 当我将先前代码中的return语句替换为return modelA.subtype1_set.all()时,出现以下错误:

  在/ modelAs / 1 /处的

AttributeError'ModelA'对象没有属性   'subtype1_set'

对我来说很清楚,因为ModelASubtype1之间没有关系。 那么,如何查询子类实例?

0 个答案:

没有答案