2012-06-14 12 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是您正在嘗試分析的當前人。

相關問題