加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – django tastypie中的嵌套资源

发布时间:2020-12-16 22:01:07 所属栏目:Python 来源:网络整理
导读:我有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_pr

我有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','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,"objects": [{"category": ["id": 1,"is_active": true,"name": "test1","resource_uri": "/api/ecp/merchantcategory/1/"],"utcStateUnsubscribed": null}]

底线是“我想用单个rest api调用所有相关对象,而不是调用单独的rest api,这需要多个请求”

最佳答案
您必须在类别字段声明中指定full = True作为关键字arg:http://django-tastypie.readthedocs.org/en/latest/fields.html#id1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读