5
我有2種型號如下嵌套資源
商人
class MerchantProfile(StateModel):
class Meta:
verbose_name = "Merchant Profile"
ordering = ('name',)
def __unicode__(self):
return u'%s' % (self.name,)
user = models.OneToOneField(UserProfile, related_name="merchant_profile")
payment_card = models.OneToOneField(PaymentCard, related_name="merchant_profile")
current_state = models.IntegerField('State', choices=STATE_CHOICES)
name = models.CharField('Merchant Name', max_length=64)
類別
class Category(models.Model):
merchant = models.ForeignKey(MerchantProfile, related_name="category")
name = models.CharField(max_length=30)
is_active=models.BooleanField()
我有資源文件,如下
子資源
class MerchantCategoryResource(ModelResource):
api_key = fields.CharField(attribute='merchant__user__api_key', readonly=True)
class Meta:
#get username from headers and apply filter query
queryset = Category.objects.all()
resource_name = 'merchantcategory'
#excludes = ['id','email', 'password', 'is_active', 'is_staff', 'is_superuser']
detail_allowed_methods = ['get']
default_format = "application/json"
filtering = {
'user_id': ALL,
'api_key':ALL
}
父資源
class MerchantAllResource(ModelResource):
category = fields.ToManyField(MerchantCategoryResource,'category')
class Meta:
#get username from headers and apply filter query
queryset = MerchantProfile.objects.all()
resource_name = 'merchantinfo'
#excludes = ['id','email', 'password', 'is_active', 'is_staff', 'is_superuser']
detail_allowed_methods = ['get']
default_format = "application/json"
filtering = {
'user_id': ALL,
'api_key':ALL
}
輸出是
{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"category": ["/api/ecp/merchantcategory/1/"], "create_time": "2012-08-17T12:56:55", "current_state": 1, "id": 1, "modified_time": "2012-08-17T12:56:55", "name": "ram", "resource_uri": "/api/ecp/merchantinfo/1/", "utcStateCreated": null, "utcStateDisabled": null, "utcStateEnabled": null, "utcStateUnsubscribed": null}]
我需要如下
{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"category": ["id": 1, "is_active": true, "name": "test1", "resource_uri": "/api/ecp/merchantcategory/1/"], "create_time": "2012-08-17T12:56:55", "current_state": 1, "id": 1, "modified_time": "2012-08-17T12:56:55", "name": "ram", "resource_uri": "/api/ecp/merchantinfo/1/", "utcStateCreated": null, "utcStateDisabled": null, "utcStateEnabled": null, "utcStateUnsubscribed": null}]
底線是「我想打電話給單其餘所有相關對象API,而不是調用獨立的休息API,這需要多個請求「