0

サブクラス化されたモデルがあります

class Foo(models.Model):
    name = models.CharField(max_length=255)
    child_model = models.CharField(max_length=255)

class Bar(Foo):
    woots = models.ManyToManyField(Woot)

class Woot(models.Model):
    color = models.CharField(max_length=255)

そして、いくつかのおいしいパイのリソース:

class FooResource(ModelResource):
    class Meta:
        queryset = Foo.objects.all()

class BarResource(ModelResource):
    class Meta:
        queryset = Foo.objects.all()

class WootResource(ModelResource):
    class Meta:
        queryset = Woot.objects.all()

FooResource にアクセスするとき、child_model 属性 == bar の場合は、代わりに「再ルーティング」して BarResource を返すことが理想的です。

それができない場合は、シリアル化された woots の配列を取得してバンドルに入れる方法 (child_model 属性 == bar の場合) は、私にとっては問題ありません。

4

1 に答える 1

1

これを試して:

class FooResource(ModelResource):
    class Meta:
        queryset = Foo.objects.all()  

    def dehydrate(self, bundle):
        if bundle.data['child_model']=="bar":
            return json.loads(BarResource().dispatch_list(bundle.request).content)
        return bundle
于 2013-03-21T09:25:39.390 に答える