当前位置:  开发笔记 > 编程语言 > 正文

Django Piston:如何从处理程序结果中排除嵌套字段?它甚至可能吗?

如何解决《DjangoPiston:如何从处理程序结果中排除嵌套字段?它甚至可能吗?》经验,为你挑选了0个好方法。

我正在为使用django-piston为Django应用程序编写的API进行最后润色.该API是能够通过其是请求或IP地址来搜索RequestIPAddress分别实例.每个请求可以有1个或多个IPAddress与之关联.

因此,例如,我有一个API调用,它将显示IPAddress与活动状态"活动","非活动"或"全部"(对于任何一个)匹配的所有对象.的Request,其每一个IPAddress实例相关联的可作为IPAddress.request.

我遇到的问题是,这Request.inputterUser配置请求的人的实例的外键.当我从为此API调用创建的处理程序返回结果时,User将显示实例中的所有字段,包括password.

这是不好的; 我不想要这个.

所以这是我的处理程序:

class SearchByIPStatusHandler(BaseHandler):
    model = IPAddress
    allowed_methods = ('GET',)
    anonymous = AnonymousIPHandler

    def read(self, request, status):
        """
        Returns IP addresses based on activity status.  
        Status: 'active', 'inactive', 'all'

        """
        if status == 'all':
            return self.model.objects.all()
        else:
            active = True if (status=='active') else False
            return self.model.objects.filter(active=active)

这是以下结果的示例/api/show/all/:


  
    2010-02-05 17:08:53.651729
    2010-02-12 17:08:23
    2010-02-05 17:08:53.625318
    255.255.255.255
    255.255.255.254
    
2.4.6.80/31
True 4 2010-02-05 17:08:53.382381 2010-02-05 17:08:53.382313 2010-02-12 17:08:23 20100212-badthings-01 bad things happened jathan Jathan McCollum True email@fake.notreal True True 2010-02-05 18:55:51.877746 [ENCRYPTED STRING I REDACTED] 1 2010-01-28 09:56:32 joeuser True

我真正想要的结果是inputter.username,而不是所有其他的东西.我已尝试exclude在处理程序上实现属性的各种迭代无济于事.如果我只是跳过整个请求字段,那么工作正常,如下所示:

处理程序:

exclude = ('request', )

结果如下:


  
    2010-02-05 17:08:53.651729
    2010-02-12 17:08:23
    2010-02-05 17:08:53.625318
    255.255.255.255
    255.255.255.254
    
2.4.6.80/31
True 4

但这些结果也不是我想要的.

最后,我的问题是:

如何从处理程序结果中排除嵌套字段?它甚至可能吗?

我尝试了以下各种迭代,所有迭代都没有结果或意外结果:

# try to exclude request.inputter
exclude = ( ('request', ('inputter', ), ) )

# try to exclude request.inputter.password
exclude = ( ('request', ('inputter', ('password', ) ) ) ) 

我认为我误解或误用了在这种情况下进行字段排除的方式,因此非常感谢对此主题的任何启示.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有