使用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,而不是请求,这与我的结果是一致的