2016-05-11 50 views
1

計數沒有與多對多場模型:Django的模型比賽總在多對多

class Number(Model): 
    current_number = IntegerField() 

class MyModel(models.Model): 
    numbers_set = models.ManyToMany(Number) 

例如,我們有這樣的數據集:

my_model_1.numbers_set = [1, 2, 3, 4] 
my_model_2.numbers_set = [2, 3, 4, 5] 
my_model_3.numbers_set = [3, 4, 5, 6] 
my_model_4.numbers_set = [4, 5, 6, 7] 
my_model_5.numbers_set = [4, 5, 6, 7] 

我正在尋找一種方式,通過量合計爲MyModel相同的數字。

f.e. MyModel對象的numbers_set中至少有3個相同的數字。

[ 
    [my_model_1, my_model_2], 
    [my_model_2, my_model_3], 
    [my_model_3, my_model_4, my_model_5], 
] 
+0

如果超過兩個模型至少有3個相同的數字會怎樣?你想把他們全部放在同一個列表中嗎? – AKS

+0

@AKS,是的。 (我已將您的問題添加到示例中) –

+0

您使用的是哪個數據庫和Django版本? – AKS

回答

0

如果你使用的是Postgres 9.4版和Django的1.9版本,這是更好地使用JSONField(),而不是使用ManyToMany(),用於索引目的使用上的Postgres jsonb索引將爲您提供高效的查詢獲取數據。檢查here

+0

在實際情況下,而不是數字我有各種領域(TextField,CharField,DateTimeField,IntegerField)相當常見的模型。所以我假設我不能使用JSONField .. –