仅当请求该资源的详细信息时,是否有将数据从中间表添加到资源的最佳实践?
作为示例,我将使用 Django 示例模型(Person、Group 和 Membership)。
当我获得所有人员资源 (/api/person/) 的列表时,我没有在结果中获得任何组信息。
[
{
"id": "1",
"name": "John Doe",
"resourceUri": "/user/1/"
},
{
"id": "2",
"name": "Jane Doe",
"resourceUri": "/user/2/"
}
]
但是,当我获得一个人资源 (/api/person/1/) 的详细信息时,我希望结果中包含某些组信息。该组信息部分来自组和成员模型。
{
"resourceUri": "/user/1/",
"name": "John Doe",
"groups": [
{
"date_joined": "15/02/1988",
"name": "administrator"
},
{
"date_joined": "25/05/1992",
"name": "helpdesk"
}
]
}
所以基本上我正在寻找一种方法来为我的结果添加额外的数据。并且可选地仅在请求特定方法(例如获取资源的详细信息)时。我尝试通过重写 dehydrate 方法来实现这一点,我成功了,但感觉非常不自然,我想知道是否有最佳实践。
Django 模型
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
class Meta:
unique_together = ('person', 'group')
美味派资源
class Person(ModelResource):
class Meta:
queryset = Person.objects.all()