1
我有一个这样的Django项目的一些型号:Django的Tastypie通用关系
class Link(BaseModel, BeginEndModel):
entity0_content_type = models.ForeignKey(ContentType, related_name='link_from')
entity0_object_id = models.PositiveIntegerField()
entity0_content_object = generic.GenericForeignKey('entity0_content_type', 'entity0_object_id')
entity1_content_type = models.ForeignKey(ContentType, related_name='link_to')
entity1_object_id = models.PositiveIntegerField()
entity1_content_object = generic.GenericForeignKey('entity1_content_type', 'entity1_object_id')
link_type = models.ForeignKey(LinkType)
class Work(BaseModel, SluggedModel):
""" Eser """
name = models.CharField(max_length=255)
links = generic.GenericRelation('Link', content_type_field='entity0_content_type', object_id_field='entity0_object_id')
我想创建一个类似与Tasypie API来WorkResource:
from tastypie.resources import ModelResource, ALL, ALL_WITH_RELATIONS
from tastypie import fields, utils
from tastypie.contrib.contenttypes.fields import GenericForeignKeyField
from tastypie.authentication import Authentication, SessionAuthentication
from tastypie.authorization import DjangoAuthorization, Authorization
from models import Link, LinkType, LinkPhrase
from models import Work
....
class WorkResource(BaseModelResource):
links = fields.ToManyField('musiclibrary.api.LinkResource', 'links_set')
class Meta:
queryset = Work.objects.all()
always_return_data = True
filtering = {
'slug': ALL,
'name': ['contains', 'exact']
}
class LinkResource(ModelResource):
entity0_content_object = GenericForeignKeyField({
Work: WorkResource,
Artist: ArtistResource
}, 'entity0_content_object')
entity1_content_object = GenericForeignKeyField({
Work: WorkResource,
Artist: ArtistResource
}, 'entity1_content_object')
link_type = fields.ForeignKey(LinkTypeResource, 'link_type', full=True, null=True)
class Meta:
queryset = Link.objects.all()
当我想尝试查看工作资源结果,links
属性始终是一个空数组。 为什么我无法建立2资源之间的关系?
注:我使用Django 1.6.5,django-tastypie 0.11.1。我简化了我上面的models.py和api.py示例。如果需要,我可以分享我的完整代码。