filtering.py 文件源码

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

项目:django-rest-framework-client 作者: qvantel 项目源码 文件源码
def get(self, **kwargs):
        """
        Similar to the Django ORM's QuerySet.get
        :param kwargs: it supports the same kwargs as filter does
        """
        params = self.params.copy()
        params.update(kwargs)
        params = self._preprocess_filter_params(params)
        pk = self.model._primary_key()
        if set(params) - {'select_related'} == {pk}:
            url = self.model._resource_url(params[pk])
            del params[pk]
            if params:
                result = self.model._rest_call(url, params=params)
            else:
                result = self.model._rest_call(url)
        else:
            url = self.model._resources_url()
            params['limit'] = 1
            json_ = self.model._rest_call(url, params=params)
            count = json_['count']
            if count == 0:
                raise self.model.DoesNotExist(
                    "%s matching query does not exist." % self.model.__name__
                )
            if count >= 2:
                raise MultipleObjectsReturned(
                    "get() returned more than one %s -- it returned %d!" % (self.model.__name__, count)
                )
            result = json_['results'][0]
        obj = self.model(**result)
        obj._persisted = True
        return obj
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号