0

我已经看到了自定义资源被进一步细分的测试代码。但这只是test为了,而不是为了任何真正的用途。

为什么有人会出于明显的原因(但显然不是我)想要对资源进行子类化?

一个例子就足够了。

4

1 回答 1

1

我刚刚遇到了需要对资源进行子类化的情况。我有一个 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 访问它们。此外,这些子类资源将有权访问为其超类定义的所有方法。例如,他们可以覆盖超类的脱水方法以添加更多字段。

于 2013-02-26T17:05:56.470 回答