2012-08-27 23 views
5

tôi có 2 mô hình như saunguồn lực lồng trong django tastypie

thương

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) 

Thể loại

class Category(models.Model): 
    merchant = models.ForeignKey(MerchantProfile, related_name="category") 
    name = models.CharField(max_length=30) 
    is_active=models.BooleanField() 

Tôi có tập tin tài nguyên như sau

nguồn Child

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 
     } 

tài nguyên Chánh

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 
     } 

Đầu ra là

{"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}] 

tôi cần nó như sau

{"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}] 

Điểm mấu chốt là "tôi muốn gọi tất cả các đối tượng liên quan với phần còn lại đơn api, thay vì gọi api nghỉ ngơi riêng biệt, cần nhiều yêu cầu "

Trả lời

Các vấn đề liên quan