我见过自定义资源进一步子类化的测试代码。
但这是test
的缘故,不是为了任何真正的用途。
为什么有人想出于明显的原因(但显然不是我)对子资源进行子类化?
一个例子就足够了。
答案 0 :(得分:1)
我刚遇到需要子类化资源的情况。 我有一个django模型,它有几个类似的子类(我已经简化了很多):
class Information(models.Model):
name = models.CharField)
class Question(Information):
question = models.CharField)
class Link(Information):
url = models.CharField()
我想要一个用于访问所有Information对象的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来返回所有的Information对象(以及所有这些对象共有的属性),但是如果我需要访问子类特定的属性,我可以通过他们的子类资源API访问它们。此外,这些子类资源可以访问为其超类定义的所有方法。例如,他们可以覆盖超类'脱水方法以添加更多字段。