mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Fixed #1857 -- Fixed get_previous_by_FIELD and get_next_by_FIELD to work
properly with keyword arguments. Patch from tom@jerakeen.org. git-svn-id: http://code.djangoproject.com/svn/django/trunk@3157 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -271,13 +271,13 @@ class Model(object): | ||||
|         value = getattr(self, field.attname) | ||||
|         return dict(field.choices).get(value, value) | ||||
|  | ||||
|     def _get_next_or_previous_by_FIELD(self, field, is_next): | ||||
|     def _get_next_or_previous_by_FIELD(self, field, is_next, **kwargs): | ||||
|         op = is_next and '>' or '<' | ||||
|         where = '(%s %s %%s OR (%s = %%s AND %s.%s %s %%s))' % \ | ||||
|             (backend.quote_name(field.column), op, backend.quote_name(field.column), | ||||
|             backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.pk.column), op) | ||||
|         param = str(getattr(self, field.attname)) | ||||
|         q = self.__class__._default_manager.order_by((not is_next and '-' or '') + field.name, (not is_next and '-' or '') + self._meta.pk.name) | ||||
|         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) | ||||
|         q._where.append(where) | ||||
|         q._params.extend([param, param, getattr(self, self._meta.pk.attname)]) | ||||
|         try: | ||||
|   | ||||
| @@ -128,6 +128,8 @@ True | ||||
| <Article: Article 2> | ||||
| >>> a2.get_next_by_pub_date() | ||||
| <Article: Article 3> | ||||
| >>> a2.get_next_by_pub_date( headline__endswith = '6' ) | ||||
| <Article: Article 6> | ||||
| >>> a3.get_next_by_pub_date() | ||||
| <Article: Article 7> | ||||
| >>> a4.get_next_by_pub_date() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user