methods.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:django-rest-framework-client 作者: qvantel 项目源码 文件源码
def __get__(self, instance, owner):
        from restframeworkclient.models import Model

        def callable(**kwargs):
            def get_value(value):
                if isinstance(value, dict):
                    return json.dumps(value, cls=DjangoJSONEncoder)
                if value in (datetime.datetime.now, timezone.now):
                    return value()
                if isinstance(value, Model):
                    return value.pk
                return value

            kwargs = {k: get_value(v) for k, v in kwargs.items()}
            arg_name = 'data' if self.method == 'POST' else 'params'
            if self.static:
                url = owner._resources_url() + self.subresource + '/'
                data = owner._rest_call(url, method=self.method, **{arg_name: kwargs})
            else:
                url = instance._resource_url(instance.pk) + self.subresource + '/'
                data = instance._rest_call(url, method=self.method, **{arg_name: kwargs})
            if self.unwrapping_key:
                data = data[self.unwrapping_key]
            if self.model:
                obj = self.model(**data)
                obj._persisted = True
                return obj
            return data
        return callable() if self.as_property else callable
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号