Django

Code

Changeset 3157

Show
Ignore:
Timestamp:
06/19/06 21:17:14 (2 years ago)
Author:
mtredinnick
Message:

Fixed #1857 -- Fixed get_previous_by_FIELD and get_next_by_FIELD to work
properly with keyword arguments. Patch from tom@jerakeen.org.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/db/models/base.py

    r3145 r3157  
    272272        return dict(field.choices).get(value, value) 
    273273 
    274     def _get_next_or_previous_by_FIELD(self, field, is_next): 
     274    def _get_next_or_previous_by_FIELD(self, field, is_next, **kwargs): 
    275275        op = is_next and '>' or '<' 
    276276        where = '(%s %s %%s OR (%s = %%s AND %s.%s %s %%s))' % \ 
     
    278278            backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.pk.column), op) 
    279279        param = str(getattr(self, field.attname)) 
    280         q = self.__class__._default_manager.order_by((not is_next and '-' or '') + field.name, (not is_next and '-' or '') + self._meta.pk.name) 
     280        q = self.__class__._default_manager.filter(**kwargs).order_by((not is_next and '-' or '') + field.name, (not is_next and '-' or '') + self._meta.pk.name) 
    281281        q._where.append(where) 
    282282        q._params.extend([param, param, getattr(self, self._meta.pk.attname)]) 
  • django/trunk/tests/modeltests/lookup/models.py

    r3075 r3157  
    129129>>> a2.get_next_by_pub_date() 
    130130<Article: Article 3> 
     131>>> a2.get_next_by_pub_date( headline__endswith = '6' ) 
     132<Article: Article 6> 
    131133>>> a3.get_next_by_pub_date() 
    132134<Article: Article 7>