def get_related_where(self, fk_name, using, type): qn = self.get_quote_name(using) related_where = [ "%s = %s.%s" % (qn(self.model._meta.pk.get_attname_column()[1]), type, qn(fk_name)) ] related_query = Query(self.manager.related.model) for name, value in self.filter.iteritems(): related_query.add_q(Q(**{name: value})) for name, value in self.exclude.iteritems(): related_query.add_q(~Q(**{name: value})) related_query.add_extra(None, None, [ "%s = %s.%s" % (qn(self.model._meta.pk.get_attname_column()[1]), type, qn(self.manager.related.field.m2m_column_name())) ], None, None, None) related_query.add_count_column() related_query.clear_ordering(force_empty=True) related_query.default_cols = False related_filter_where, related_where_params = related_query.get_compiler( using=using).as_sql() if related_filter_where is not None: related_where.append('(' + related_filter_where + ') > 0') return related_where, related_where_params
def get_related_where(self, fk_name, using, type): qn = self.get_quote_name(using) related_where = ["%s = %s.%s" % (qn(self.model._meta.pk.get_attname_column()[1]), type, qn(fk_name))] related_query = Query(self.manager.related.model) for name, value in self.filter.iteritems(): related_query.add_q(Q(**{name: value})) for name, value in self.exclude.iteritems(): related_query.add_q(~Q(**{name: value})) related_query.add_extra( None, None, [ "%s = %s.%s" % ( qn(self.model._meta.pk.get_attname_column()[1]), type, qn(self.manager.related.field.m2m_column_name()), ) ], None, None, None, ) related_query.add_count_column() related_query.clear_ordering(force_empty=True) related_query.default_cols = False related_filter_where, related_where_params = related_query.get_compiler(using=using).as_sql() if related_filter_where is not None: related_where.append("(" + related_filter_where + ") > 0") return related_where, related_where_params
def __init__(self, model, query=None, using=None): # the model needs to be defined so that we can construct our custom # query if query is None: query = Query(model) query.add_q(models.Q(effective_to__isnull=True)) return super(ActiveQuerySet, self).__init__(model, query, using)