def get_extra_restriction(self, where_class, alias, remote_alias): field = self.rel.to._meta.get_field_by_name(self.content_type_field_name)[0] contenttype_pk = self.get_content_type().pk cond = where_class() lookup = field.get_lookup('exact')(Col(remote_alias, field, field), contenttype_pk) cond.add(lookup, 'AND') return cond
def wrapper(self, where_class, alias, lhs): cond = func(self, where_class, alias, lhs) from .models import PermanentModel if not issubclass(self.model, PermanentModel) or issubclass( where_class, AllWhereNode): return cond if issubclass(where_class, DeletedWhereNode): cond = cond or ~where_class() else: cond = cond or where_class() if django.VERSION < (1, 8, 0): field = self.model._meta.get_field_by_name(settings.FIELD)[0] else: field = self.model._meta.get_field(settings.FIELD) if django.VERSION < (1, 7, 0): from django.db.models.sql.where import Constraint if settings.FIELD_DEFAULT is None: lookup = Constraint(lhs, settings.FIELD, field), 'isnull', True else: lookup = Constraint(lhs, alias, field), 'exact', settings.FIELD_DEFAULT else: if django.VERSION < (1, 8, 0): from django.db.models.sql.datastructures import Col else: from django.db.models.expressions import Col if settings.FIELD_DEFAULT is None: lookup = field.get_lookup('isnull')(Col(lhs, field, field), True) else: lookup = field.get_lookup('exact')(Col(lhs, field, field), settings.FIELD_DEFAULT) cond.add(lookup, 'AND') return cond