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

すべての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()

このようにして、すべてのInformationオブジェクト(およびそれらすべてに共通の属性)を返すためのAPIがありますが、サブクラス固有の属性にアクセスする必要がある場合は、サブクラスリソースAPIを介してそれらにアクセスできます。さらに、これらのサブクラス化されたリソースは、スーパークラス用に定義されたすべてのメソッドにアクセスできます。たとえば、スーパークラスのdehydrateメソッドをオーバーライドして、フィールドを追加できます。

于 2013-02-26T17:05:56.470 に答える