我已经看到了自定义资源被进一步细分的测试代码。但这只是test
为了,而不是为了任何真正的用途。
为什么有人会出于明显的原因(但显然不是我)想要对资源进行子类化?
一个例子就足够了。
我刚刚遇到了需要对资源进行子类化的情况。我有一个 django 模型,它有几个像这样的子类(我已经简化了很多):
class Information(models.Model):
name = models.CharField)
class Question(Information):
question = models.CharField)
class Link(Information):
url = models.CharField()
我想要一个用于访问所有信息对象的 API,但仍然希望能够访问每个子类的所有子类特定属性。在这种情况下,我想要 3 个资源:
class InformationResource(ModelResource):
class Meta:
queryset = Information.objects.all()
def dehydrate(self, bundle):
'''Add some extra meta data here'''
class QuestionResource(InformationResource):
class Meta:
queryset = Question.objects.all()
class LinkResource(InformationResource):
class Meta:
queryset = Link.objects.all()
这样我就有了一个用于返回所有信息对象(以及所有这些对象共有的属性)的 api,但是如果我需要访问子类特定属性,我可以通过它们的子类资源 API 访问它们。此外,这些子类资源将有权访问为其超类定义的所有方法。例如,他们可以覆盖超类的脱水方法以添加更多字段。