我有一个场景,其中项目是从模型中的项目列表中分页的,我想创建一个函数来返回包含该项目的页面。
例如
class Item(models.Model):
subject = models.CharField(max_length=200)
假设我在表中有 1000 个项目,并且我总是每页返回 10 个。我如何在模型中构建一个方法/函数来告诉我该项目将落在哪个页面?
请指教?
我有一个场景,其中项目是从模型中的项目列表中分页的,我想创建一个函数来返回包含该项目的页面。
例如
class Item(models.Model):
subject = models.CharField(max_length=200)
假设我在表中有 1000 个项目,并且我总是每页返回 10 个。我如何在模型中构建一个方法/函数来告诉我该项目将落在哪个页面?
请指教?
你可以添加一个类方法,它需要一个order_by
和paginate_by
import itertools
def grouper(n, iterable, fillvalue=None):
args = [iter(iterable)] * n
return itertools.izip_longest(fillvalue=fillvalue, *args)
class Item(models.Model):
# attrs
@classmethod
def get_pagination_index(cls, self, order_by, paginate_by):
if order_by:
qs = cls.objects.all().order_by(order_by)
else:
qs = cls.objects.all()
pages = grouper(paginate_by, qs)
i = 0
for page in pages:
i += 1
if self in page:
return i
# return item_index = list(qs).index(self) # get the exact number