我具有以下模型继承结构:
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'
对我来说很清楚,因为ModelA
和Subtype1
之间没有关系。
那么,如何查询子类实例?