【发布时间】:2014-08-20 09:26:15
【问题描述】:
我正在使用 Django REST Framework 并尝试将两个模型 Tweet 和 Article 合并到一个列表中 - Feed。我希望 Feed 成为一个列表 API 视图,按时间顺序列出 Tweet 和 Article 对象,到目前为止我已经这样做了。这是我的代码...
class FeedViewSet(viewsets.ModelViewSet):
permission_classes = (AllowAny,)
serializer_class = FeedSerializer
paginate_by = 10
def list(self, request, *args, **kwargs):
results_list = list(chain(NewsArticle.objects.all(),
Tweet.objects.all()))
sorted_list = sorted(results_list, key=lambda instance: instance.date_added)
results = list()
for entry in sorted_list:
item_type = entry.__class__.__name__.lower()
if isinstance(entry, Tweet):
serializer = TweetSerializer(entry)
if isinstance(entry, Article):
serializer = ArticleSerializer(entry)
data_dict = {'item': item_type, 'data': serializer.data}
results.append(data_dict)
feed_ser = FeedSerializer(results, many=True)
return Response(feed_ser.data)
这工作到我可以在我设置的 API 端点访问数据,但是分页不适用于此设置 - 所有项目都返回,没有分页选项。
我已关注this solution,但我尝试了这两种方法,但都没有运气。
编辑:我知道一个明显的解决方案是构建一个它们继承的基类,并查询该表/对象,但不幸的是,这不是一个选项。
感谢您的帮助!
【问题讨论】:
-
您能分享一下您是如何创建模型的吗?它们与外键有关吗?
标签: django django-models django-rest-framework django-orm