Django 1.11. da yeni
İndeks sınıfları, veritabanı dizinlerinin oluşturulmasını kolaylaştırır. Meta.indexes seçeneğini kullanarak eklenebilirler. Bu belge, indeks seçeneklerini içeren Indexin API kaynakçalarını açıklamaktadır.
İndeksler django.db.models.indexes‘de tanımlanır. Ancak kolaylık sağlamak için django.db.models içine aktarılırlar. Standart kural, from django.db import models kullanmak ve indeksler için kalıp olarak başvurmaktır. <IndexClass>
class Index(fields=[], name=None, db_tablespace=None)[source]
Veritabanında bir indeks (B-Tree) oluşturur.
Dizinin (indeks) istenildiği alanların adının bir listesi.
Varsayılan olarak, dizinler her sütun için artan bir sıra ile oluşturulur. Bir sütun için azalan bir dizin olan bir dizini tanımlamak için, alanın adından önce tire ekleyin.
Örneğin, Index(fields=[‘headline’, ‘-pub_date’]) (headline, pub_date DESC) ile SQL oluşturur. Dizin isteği MySQL’de desteklenmiyor. Bu durumda, azalan bir dizin normal bir dizin olarak oluşturulur.
Sütun sıralaması, SQLite 3.3.0+ ve yalnızca bazı veritabanı dosya biçimleri için desteklenir. Konular için SQLite belgelerine bakın.
İsim dizinindir. İsim yani name verilmemişse Django doğal olarak bir isim çıkaracaktır. Farklı veritabanları ile uyumluluk için dizin isimleri 30 karakterden uzun olamaz ve bir sayı (0-9) veya altçizgi ( _ ) ile başlaması gerekir.
Django 2.0. da yeni
Bu dizin için kullanılacak veritabanı tablolarının adı. Tek alan dizinleri için, db_tablespace belirtilmemişse, alanının db_tablespace‘inde dizin oluşturulur.
Field.db_tablespace belirtilmemişse (veya dizin birden fazla alan kullanıyorsa), kalıbın sınıf Meta’sındaki db_tablespace seçeneğinde belirtilen tablolama alanında oluşturulur. Bu tablolardan hiçbiri ayalanmazsa, dizin tabloyla aynı tablolama alanında oluşturulur.
PostgreSQL’e özgü dizinlerin bir listesi için bkz: django.contrib.postgres.indexes
Kalıp alanı kaynakçası (Model field references) | Kalıp _meta API (Model _meta API) |