0

我的 Django 模型看起来像:

class Session(models.Model):
    ...

class Document(models.Model):
    session = models.ForeignKey(Session)
    date_created = models.DateTimeField(auto_now_add=True)

    class Meta:
        abstract = True

class Invoice(Document):
    number = models.PositiveIntegerField()
    # and some other fields

class SupplyRequest(Document):
    # fields here

这样,每个InvoiceSupplyRequest实例都链接到一个Session并具有一个date_created属性。好的。所以,我创建了一个ModelResourceforSession和 for Invoice,想象 Tastypie 可以透明地遍历Document模型字段。但不起作用:

class SessionResource(ModelResource):

    class Meta:
        queryset = Session.objects.all()
        ...

class InvoiceResource(ModelResource):

    session = fields.ForeignKey(SessionResource, 'session')

    class Meta:
        queryset = Invoice.objects.all()
        ...

当我尝试序列化发票时,我收到以下错误消息:

NoReverseMatch: Reverse for 'api_dispatch_detail' with arguments '()' and keyword arguments '{'pk': 1, 'resource_name': 'session'}' not found.

有没有办法使用 Tastypie 处理模型继承?

我忘了提到Document模型是一个抽象类。

4

1 回答 1

2

我想你一定忘记设置 url SessionResource。

from tastypie.api import Api

api = Api()

api.register(SessionResource())

urlpatterns += patterns('',
    (r'^api/', include(api.urls)),
)

您在 urls.py 中执行此操作?

拥抱。

于 2012-07-19T18:24:41.863 回答