2016-05-11 6 views
1

Существует модель с полем ManyToMany:Джанго модель агрегатные матчи в ManyToMany

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, которые имеют как минимум 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(), для индексации цели использования jsonb индексации на Postgres, которое обеспечит вам эффективный запрос для выборки данных. Проверить here

+0

В реальном случае вместо номера у меня довольно распространенная модель с различными полями (TextField, CharField, DateTimeField, IntegerField). Поэтому я предполагаю, что не могу использовать JSONField. –

 Смежные вопросы

  • Нет связанных вопросов^_^