class ILike(IContains): lookup_name = 'ilike' def process_lhs(self, qn, connection): lhs_sql, params = super(ILike, self).process_lhs(qn, connection) backend_name = backend.__name__ if 'postgres' in backend_name or \ 'oracle' in backend_name: lhs_sql = 'UPPER(%s)' % lhs_sql return (lhs_sql, params) def get_rhs_op(self, connection, rhs): return connection.operators['icontains'] % rhs Field.register_lookup(Like) Field.register_lookup(ILike) else: from django.db import connection from django.db.models.fields import Field, subclassing from django.db.models.sql.constants import QUERY_TERMS if isinstance(QUERY_TERMS, set): QUERY_TERMS.add('like') QUERY_TERMS.add('ilike') else: QUERY_TERMS['like'] = None QUERY_TERMS['ilike'] = None connection.operators['like'] = connection.operators['contains']
def ready(self): Field.register_lookup(PostgresILike) if settings.SENTRY_DSN: settings.SENTRY_INIT(settings.SENTRY_DSN, settings.SENTRY_OPTS) self.validate_jwt_manager()
return '%s = %s * %s' % (lhs, rhs, dimension), params return CoordinateLookup class CoordinateValue(Transform): lookup_name = 'coord' def as_sql(self, compiler, connection): lhs, params = compiler.compile(self.lhs) return "%s" % lhs, params @property def output_field(self): return CoordinatesField() Field.register_lookup(CoordinateValue) p = Product.objects.get(stock_price__coord__x2=500) print(p) #********************************************************************** #Expressions from discount.models import Product from django.db.models import F, Q, Count, Value, DateTimeField, ExpressionWrapper, Func, Aggregate, IntegerField, CharField from django.db.models.functions import Length #??? from datetime import date #https://docs.djangoproject.com/en/1.8/ref/models/expressions/
import logging import re from orthos2.api.lookups import NotEqual from orthos2.data.models import (Annotation, Architecture, Domain, Enclosure, Installation, Machine, MachineGroup, NetworkInterface, PCIDevice, Platform, RemotePower, SerialConsole, SerialConsoleType, System, User, Vendor) from django.core.exceptions import (FieldDoesNotExist, FieldError, MultipleObjectsReturned) from django.db.models import Field, Q from django.db.models.functions import Length logger = logging.getLogger('api') Field.register_lookup(NotEqual) class HelperFunctions: @staticmethod def get_ipv4(machine_id): """ Return the IPv4 address of a machine. This value gets set after initialising a machine. """ machine = Machine.objects.get(pk=machine_id) value = getattr(machine, 'ipv4', None) return value