【发布时间】:2021-05-23 20:27:50
【问题描述】:
我在 Django 中有以下基本模型:
class Group(models.Model):
class People(models.Model):
groups = models.ManyToManyField(Group, related_name='members')
class Cars(models.Model):
groups = models.ManyToManyField(Group, related_name='vehicles')
我想从某些组中选择一定数量的人和汽车。我保存在列表中的组和相应的比例:
groups = [ some groups ]
proportion_pps = [ some positive integer list ]
proportion_cars = [ some positive integer list ]
现在我选择的代码如下所示:
for x, group in enumerate(groups):
pps |= People.objects.filter(groups=grop).all().order_by('?')#[:proportion_pps[x - 1]]
crs |= Cars.objects.filter(groups=group).all().order_by('?')#[:proportion_crs[x - 1]]
到目前为止一切都很好......但是现在我在尝试时遇到了“切片”错误:
pps.distinct()
crs.distinct()
或类似的东西:
list_pps = list(pps.values_list('id', flat=True).order_by('?'))
我看不出有什么办法。任何帮助将不胜感激...谢谢!
【问题讨论】:
-
#[:proportion_pps[x - 1]]应该做什么? -
我忘了删除评论标签 (#),以防您是这个意思。否则,比如
[:7],我只想随机选择该组中的 7 个元素。
标签: django filtering django-queryset slice