使用django tastypie访问模型子类属性

使用django tastypie访问模型子类属性,django,subclass,tastypie,Django,Subclass,Tastypie,我有一个模型,它是分壳的 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

我有一个模型,它是分壳的

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)
还有一些tastypie资源:

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

如果我做不到这一点,那么我可以通过任何方式将一个woot数组序列化并放入捆绑包(当child_model attribute==bar时)中。试试这个:

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

不。没用。WSGIRequest对象没有属性“request”。如果我将bundle.request更改为bundle,它将返回一组未序列化的Bar对象。我在想也许我需要先构建bundle,但我的尝试到目前为止都失败了。我不认为bundle是WSGIRequest。bundle.x应该给出一个错误:bundle对象没有。。。。。您可能正在执行以下操作:bundle.request.request?或者您是否覆盖了资源中的obj_get_list方法,该方法试图访问请求对象的请求属性?您是否尝试过并使其正常工作?我准确地复制了你的代码,这就是我得到的错误。obj_get_list接受一个bundle,但您正在发送它bundle.request,这是一个WSGIRequest。是的,它与我的api配合得非常好。根据文档obj_get_list接受一个请求:您使用的是什么版本的BTW?0.9.14。ORM和非ORM有什么不同吗?显示obj_get_list获取bundle,而不是请求,这与我的结果是一致的