def results_iter(self):
query = self.query
- attrlist = [ x.db_column for x in query.model._meta.local_fields if x.db_column ]
+ if self.query.select_fields:
+ fields = self.query.select_fields
+ else:
+ fields = self.query.model._meta.fields
+
+ attrlist = [ x.db_column for x in fields if x.db_column ]
try:
vals = self.connection.search_s(
vals = sorted(vals, cmp=cmpvals)
# process results
+ pos = 0
for dn, attrs in vals:
+ # FIXME : This is not optimal, we retrieve more results than we need
+ # but there is probably no other options as we can't perform ordering
+ # server side.
+ if (self.query.low_mark and pos < self.query.low_mark) or \
+ (self.query.high_mark is not None and pos >= self.query.high_mark):
+ pos += 1
+ continue
row = []
- for field in iter(query.model._meta.fields):
+ for field in iter(fields):
if field.attname == 'dn':
row.append(dn)
elif hasattr(field, 'from_ldap'):
else:
row.append(None)
yield row
+ pos += 1
class WhereNode(BaseWhereNode):