我有2个表,只想简单地在秒表'Book'中获取所有项目。无需“作者”表中的任何信息。
class Author(models.Model):
name = models.CharField(max_length=150, primary_key=True, db_index=True)
class Book(models.Model):
title = models.CharField(max_length=150, primary_key=True, db_index=True)
author = models.ForeignKey(Author, db_index=True)
class AuthorResource(ModelResource):
class Meta(object):
queryset = Author.objects.all()
allowed_methods = ('get', 'post', 'put', 'delete')
always_return_data = True
filtering = { 'name' : ALL }
class BookResource(ModelResource):
author_id = fields.IntegerField(attribute='author__id')
class Meta(object):
queryset = Book.objects.select_related().all()
allowed_methods = ('get', 'post', 'put', 'delete')
always_return_data = True
filtering = {'title',
'author' : ALL_WITH_RELATIONS}
这是非常慢,我注意到Tasktypie做了很多内部联接,我不在乎。我只需要表格书中的信息。不是作者表中的任何信息。
我使用REST Framework实现了相同的Web服务API,我没有注意到速度问题。
在我的实际项目中,它约为3个表,2个表每个约有100个记录,第3个表有大约800个记录。 Tastypie需要大约1分钟才能加载,REST Framework需要几秒钟。切换到使用Tastypie后,它基本上无法正常工作。太慢了。
导致性能问题的原因是什么?我做对了吗?
我是新手使用Tastypie,不确定我是否正在进行正确的查询。我应该使用hydrate / dehydrate,obj_get_list来做这个简单的查询吗?做这个非常基本的查询的正确方法是什么。
答案 0 :(得分:0)
如果您不想要,可以排除这些字段。看到这个问题。 exclude some fields in tastypie post data
OR
您可以使用ToManyField代替 select_related 来获取数据。 http://django-tastypie.readthedocs.org/en/latest/fields.html#tomanyfield