Создание комбинированного индекса из модели Django

У меня есть следующая модель:

from django.db import models class PopulationData(models.Model): slot = models.IntegerField(db_index=True) sample = models.IntegerField() value = models.FloatField() class Meta: unique_together = (('slot', 'sample'),) 

И я хотел бы создать также составной индекс для пары столбцов, у которой есть ограничение UNIQUE , например:

 CREATE INDEX my_compound_index ON myapp_populationdata (slot, sample); 

Прямо сейчас у меня есть отдельный код, связанный с сигналом post_syncdb который выдает предыдущую инструкцию SQL. Есть ли способ указать это из спецификации модели? (Примечание: я использую ветвь 1.3).

3 Solutions collect form web for “Создание комбинированного индекса из модели Django”

Начиная с django-1.5, вы можете сделать составной индекс, используя мета-опцию index_together: https://docs.djangoproject.com/en/dev/ref/models/options/#index-together

Я думаю, что это не реализовано в ORM django.

Если вы используете инструмент миграции (например, юг), который может быть хорошим местом для добавления этого оператора sql, или если вы предпочитаете избегать raw sql, вы можете использовать sqlalchemy (core), но этот случай звучит достаточно просто, чтобы просто пойти с sql.

Начиная с Django-1.11 используйте опцию Meta.indexes https://docs.djangoproject.com/en/1.11/ref/models/indexes/ :

 from django.db import models class PopulationData(models.Model): slot = models.IntegerField(db_index=True) sample = models.IntegerField() value = models.FloatField() class Meta: unique_together = (('slot', 'sample'),) indexes = [ models.Index(fields=['slot', 'sample']), ] 
  • Использование ManyToMany правильно для сложной модели в django
  • Для моделей Django есть ярлык для просмотра, существует ли запись?
  • Настройка внешнего ключа для абстрактного базового класса с помощью Django
  • Юг: выполните миграцию для столбца, который является как уникальным, так и недействительным
  • Django easy-thumbnails МАКСИМАЛЬНЫЙ РАЗМЕР
  • Mocking Django Model и save ()
  • django: исключить модели из миграций
  • Модели Django (1054, «Неизвестный столбец в списке полей»)
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.