Python Django tastypie,包括通用外键字段结果
在Tastypie文档中,有一个通用外键用法示例:Python Django tastypie,包括通用外键字段结果,python,django,tastypie,Python,Django,Tastypie,在Tastypie文档中,有一个通用外键用法示例: from django.db import models from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic class TaggedItem(models.Model): tag = models.SlugField() content_type = models.
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
class TaggedItem(models.Model):
tag = models.SlugField()
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
def __unicode__(self):
return self.tag
和模型资源:
from tastypie.contrib.contenttypes.fields import GenericForeignKeyField
from tastypie.resources import ModelResource
from .models import Note, Quote, TaggedItem
class QuoteResource(ModelResource):
class Meta:
resource_name = 'quotes'
queryset = Quote.objects.all()
class NoteResource(ModelResource):
class Meta:
resource_name = 'notes'
queryset = Note.objects.all()
class TaggedItemResource(ModelResource):
content_object = GenericForeignKeyField({
Note: NoteResource,
Quote: QuoteResource
}, 'content_object')
class Meta:
resource_name = 'tagged_items'
queryset = TaggedItem.objects.all()
现在,我能够获得以下方面的结果:
---->'/api/v1/taged_items/?note__slug=dadad'
但我找不到一种方法将标记的_项包含到以下结果中:
---->“/api/v1/note/1/”
?您必须将反向通用字段添加到
注释
模型:
from django.contrib.contenttypes import generic
class Note(models.Model):
tags = generic.GenericRelation(TaggedItem)
[...]
然后将ToManyField
添加到NoteResource
class NoteResource(ModelResource):
tags = fields.ToManyField('myapp.api.resources.TaggedItemResource',
'tags')
class Meta:
resource_name = 'notes'
queryset = Note.objects.all()