首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django tastypie:如何使用url参数控制RelatedField "fullness“?

django tastypie:如何使用url参数控制RelatedField "fullness“?
EN

Stack Overflow用户
提问于 2013-03-26 14:14:22
回答 2查看 700关注 0票数 2

我正在使用django tastypie将一个带有相关(ToOne)字段的模型发布到另一个模型资源。uri是:/api/map/?format=json

我想让客户机包含一个获取完整相关页面资源的full_pages url参数:/api/map/?full_pages=1&format=json

我不太理解Relationship Fields docs,但我做了一个可调用的get_full

代码语言:javascript
复制
def get_full(bundle):
    if bundle.request.GET.get('full_pages', 0):
        return True
    return False

我尝试将callable传递给ToOneFieldfull参数

代码语言:javascript
复制
from tastypie.contrib.gis import resources as gis_resources

class MapResource(gis_resources.ModelResource):
    page = fields.ToOneField('pages.api.PageResource', 'page', full=get_full)

但是当我检查pdb时,get_full从未被调用过。

因此,我尝试创建一个带有full属性的自定义FillableToOneField

代码语言:javascript
复制
class FillableToOneField(fields.ToOneFIeld):
    full = get_full

class MapResource(ModelResource):
    page = FillableToOneField('pages.api.PageResource', 'page')

同样,get_full永远不会被调用。

有没有更好、更简单的方法来做这件事?

EN

回答 2

Stack Overflow用户

发布于 2013-03-26 16:09:10

您可以简单地在dehydrate方法下实现这一点,如下所示。

代码语言:javascript
复制
class MapResource(ModelResource):
    page = fields.ToOneField('pages.api.PageResource', 'page')

    def dehydrate(self, bundle):
        if bundle.request.Get.get('full_pages'):
            self.page.full = True
        return bundle

并让他们以/api/map/?full_pages=True&format=json的身份发送请求

票数 0
EN

Stack Overflow用户

发布于 2013-03-26 22:14:27

在阅读了Amyth's answerdjango-boundaryservice code之后,我通过将full默认设置为True并在相关PageResource的dehydrate方法中对其进行修改,使其正常工作:

代码语言:javascript
复制
class MapResource(gis_resources.ModelResource):
    page = fields.ToOneField('pages.api.PageResource', 'page', full=True)

pages.api:

代码语言:javascript
复制
class PageResource(ModelResource):
    ...

    def dehydrate(self, bundle):
        if not bundle.request.GET.get('full_pages'):
            bundle = bundle.data['resource_uri']
        return bundle
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15630506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档