2013-04-07 42 views
15

tôi có mô hình sau:Tạo chỉ số tổng hợp từ một mô hình 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'),) 

Và tôi muốn tạo ra cũng là một chỉ số hợp chất trên đôi cột đó có UNIQUE hạn chế, như vậy:

CREATE INDEX my_compound_index ON myapp_populationdata (slot, sample); 

Ngay bây giờ tôi có một mã riêng biệt được kết nối với tín hiệu post_syncdb phát hành câu lệnh SQL trước đó. Có cách nào để chỉ ra nó từ mô hình đặc điểm kỹ thuật? (Lưu ý: Tôi đang sử dụng nhánh 1.3).

Trả lời

1

Tôi nghĩ rằng hiện không được triển khai trong django ORM.

Nếu bạn sử dụng công cụ di chuyển (như nam) có thể là nơi tốt để thêm câu lệnh sql đó hoặc nếu bạn muốn tránh sql thô, bạn có thể sử dụng sqlalchemy (core) nhưng trường hợp này nghe có vẻ đơn giản. sql.

1

Bắt đầu từ Django-1.11 sử dụng Meta.indexes tùy chọn 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']), 
     ] 
Các vấn đề liên quan