如何确保返回的每个模型中的对象数相同



我有点骚动了。我有两个模型,照片和视频。它们都继承自 Item 模型。我打电话给Photo.objects.all()Video.objects.all(),并将它们分组到一个列表中。然后,我使用 for 语句来显示它们。但是,我有 100 个视频对象和 1000 个照片对象。由于视频对象比照片对象少得多,如何确保视频对象在照片对象之间保持平衡?

例如,我希望列表中的项目 1、2、4、5 是照片,希望项目 3 和 6 是视频。我真的不想让视频聚集在一起。我将如何确保这种平衡的比例?我知道最终由于照片对象的数量超过了视频对象,它们必须聚集在一起,但我希望我最初的分页页面具有相对平衡的照片和视频数量。谢谢!

怎么样:

  photos = Photos.objects.all()
   videos = Videos.objects.all()
   if photos.count() != videos.count():
          #some stuff

我认为这是一个双列表合并功能。你可以这样做。

photos = Photos.objects.all()
videos = Videos.objects.all()
step = photos.count() / videos.count()
display_list = list(photos)
pos = 0
# insert videos into display_list
for v in videos:
    display_list.insert(pos, v)
    pos += step + 1

最新更新