models.py 文件源码

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

项目:django-binder 作者: CodeYellowBV 项目源码 文件源码
def get_q(self, qualifier, value, invert, partial=''):
        self.check_qualifier(qualifier)

        # TODO: Try to make the splitting and cleaning more re-usable
        if qualifier in ('in', 'range'):
            values = value.split(',')
            if qualifier == 'range':
                if len(values) != 2:
                    raise BinderRequestError('Range requires exactly 2 values for {}.'.format(self.field_description()))
        else:
            values = [value]


        if qualifier == 'isnull':
            cleaned_value = True
        elif qualifier in ('in', 'range'):
            cleaned_value = [self.clean_value(qualifier, v) for v in values]
        else:
            try:
                cleaned_value = self.clean_value(qualifier, values[0])
            except IndexError:
                raise ValidationError('Value for filter {{{}}}.{{{}}} may not be empty.'.format(self.field.model.__name__, self.field.name))

        suffix = '__' + qualifier if qualifier else ''
        if invert:
            return ~Q(**{partial + self.field.name + suffix: cleaned_value})
        else:
            return Q(**{partial + self.field.name + suffix: cleaned_value})
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号