2012-08-27 19 views
5

Ho 2 modelli, come di seguitorisorse nidificate in Django tastypie

mercante

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) 

Categoria

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

Ho file di risorse come di seguito

risorsa Bambino

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 
     } 

risorsa Parent

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 
     } 

L'uscita è

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

ne ho bisogno come segue

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

La linea di fondo è "Voglio chiamare tutti gli oggetti correlati con singola riposo API, invece di chiamare api di riposo separate, che richiedono più richieste "

risposta

Problemi correlati