2012-06-14 13 views
0

我有以下型号:Django的ORM的查询,而不是使用字典

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方法来完成。我在很多地方都做过类似的事情,并且寻找更好更成功的方法来解决这个问题会很好。

+0

如何创建另一个将用于对UserCategory进行排序的Model类,可能使用ForeignKey到UserCategory和IntegerField来存储发生次数或排名次数,只要保存ProjectUser就会更新它。 – machaku

回答

0

这应该让所有的用户在他们的类别中都有类别名称,计算这个用户的数量,然后把这个数字除以你到达其他地方的长度。

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

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

相关问题