Activerecord 如何使用Django ReST框架将复合模型映射到单个资源?

Activerecord 如何使用Django ReST框架将复合模型映射到单个资源?,activerecord,django-rest-framework,datamapper,Activerecord,Django Rest Framework,Datamapper,我试图理解如何在Django ReST Framework(DRF)应用程序中最好地将API的资源与关系数据库模型解耦 一个小例子:考虑博客帖子模型,每个帖子可以用一个或多个标签来标记: class Post(models.Model): text = models.TextField(...) tags = models.ManyToManyField(Tag, related_name='tags') class Tag(models.Model): tagname =

我试图理解如何在Django ReST Framework(DRF)应用程序中最好地将API的资源与关系数据库模型解耦

一个小例子:考虑博客帖子模型,每个帖子可以用一个或多个标签来标记:

class Post(models.Model):
   text = models.TextField(...)
   tags = models.ManyToManyField(Tag, related_name='tags')

class Tag(models.Model):
   tagname = models.CharField(...)
由于Django ORM遵循活动记录模式,因此每个表有一个模型。然而,我不想在RESTAPI上公开关系数据库模型;相反,我想提供更大的复合资源。在这里的简单示例中,我想展示一个嵌入标记的
/post/
资源;e、 例如,作为一个列表

我已经看到,我可以使用
SerializerMethodField()
在序列化程序中加入
Post
标记。对我来说,这似乎不正确,因为序列化程序的工作应该是仅将资源转换为请求的内容类型。
我可以通过跨越关系的查找将视图中的两个模型连接起来。但是,我可能需要编写一个自定义序列化程序,我不能再使用方便的视图集了。
因此,我想我要寻找的是将模型连接到一个复合的“虚拟”模型中,该模型在DB关系上没有一对一的映射,但可以通过现有的视图和序列化器传递。在某种程度上,这将更接近于域模型,而不是活动记录模式

这种做法是否明智?可行吗?还是有更好的方法来解决这个问题

免责声明:我是Django和Active Record ORMs的新手