Django ORM查询而不是使用字典

时间:2012-06-14 22:40:23

标签: django django-models

我有以下型号:

class ProjectUser(models.Model):

    categories = models.ManyToManyField('UserCategory', blank=True, null=True)

    user_id = models.PositiveIntegerField(db_index=True)
    name = models.CharField(max_length=80)
    actual_rank = models.FloatField(default=0) 

class UserCategory(models.Model):
    name = models.CharField(max_length=100)

我想要做的是获取类别名称及其在用户中出现的次数除以另一个对象的长度。

我正在创建一个类别字典{'category':ocurrences},然后迭代它并将一个数字除以一个数字来获得类别排名。

也许这是一个很好的方法,但我想知道是否可以使用一些queryset方法直接完成。我在很多地方做类似的事情,找到一个更好,更舒适的解决方法会很棒。

1 个答案:

答案 0 :(得分:0)

这应该让所有用户在其类别中拥有类别名称,计算该用户数量,然后将该数字除以您在其他地方获得的长度。

ProjectUser.objects.filter(categories__name__contains=category.name).count() / objectLength

category是您正在尝试分析的当前版本。