(self, is_next)
| 1362 | ) |
| 1363 | |
| 1364 | def _get_next_or_previous_in_order(self, is_next): |
| 1365 | cachename = "__%s_order_cache" % is_next |
| 1366 | if not hasattr(self, cachename): |
| 1367 | op = "gt" if is_next else "lt" |
| 1368 | order = "_order" if is_next else "-_order" |
| 1369 | order_field = self._meta.order_with_respect_to |
| 1370 | filter_args = order_field.get_filter_kwargs_for_object(self) |
| 1371 | obj = ( |
| 1372 | self.__class__._default_manager.filter(**filter_args) |
| 1373 | .filter( |
| 1374 | **{ |
| 1375 | "_order__%s" |
| 1376 | % op: self.__class__._default_manager.values("_order").filter( |
| 1377 | **{self._meta.pk.name: self.pk} |
| 1378 | ) |
| 1379 | } |
| 1380 | ) |
| 1381 | .order_by(order)[:1] |
| 1382 | .get() |
| 1383 | ) |
| 1384 | setattr(self, cachename, obj) |
| 1385 | return getattr(self, cachename) |
| 1386 | |
| 1387 | def _get_field_expression_map(self, meta, exclude=None): |
| 1388 | if exclude is None: |
nothing calls this directly
no test coverage detected