2013-04-24 46 views
7

我露出一个API,用于特定的模型,并希望一些序列及其相关领域的。这些相关的字段通常是重复的,我不想为每个相关的字段序列化做大量的数据库查询。有没有简单的方法来预先查询所有相关的实例,然后让相关字段序列化程序在字典中查找它?或者,也许从相关领域的ModelSerializer指定?有没有预先查找相关字段模型的方法?

回答

5

您可以在您的查询集上使用Django的标准prefetch_relatedselect_related方法。

在视图中,使用queryset属性,而不是model快捷方式。 例如...

class ExampleView(generics.ListCreateAPIView): 
    serializer_class = ExampleSerializer 
    queryset = Example.objects.select_related(...) 
+0

感谢汤姆。我不知道prefetch_related。虽然听起来好像使用它比没有更好,但它仍然不是我的方案中最有效的实现。原因是:(1)它使用IN查询,它是多个查询,而我的应用程序可以在一个查询中预测它需要的结果; (2)大多数相关领域使用相同的模型类,它看起来不像prefect_related是聪明的。您是否有任何其他建议可以采用更自定义的方式来完成此操作? – jacob 2013-04-25 13:30:20

+0

我不完全相信你的使用情况是什么样子的,但如果你需要的东西习俗,不太适合到预先提供的通用视图,那么我建议你只是写视图方法显式。 – 2013-04-25 14:11:24

+0

例如,在教程部分的第一部分3 ... http://django-rest-framework.org/tutorial/3-class-based-views.html – 2013-04-25 14:12:21

相关问题