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

时间:2014-01-13 05:40:34

标签: django django-models django-templates django-views

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

例如,我希望列表中的第1,2,4,5项为照片,第3项和第6项为视频。我真的不想让视频聚集在一起。我如何确保这种平衡的比例?据我所知,由于照片对象数量超过视频对象,因此我们不得不聚集,但我希望我的初始分页页面能够获得相对均衡的照片和视频。 谢谢!

2 个答案:

答案 0 :(得分:0)

怎么样:

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

答案 1 :(得分:0)

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

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