用於Django 1.7的documentation提及RunSQL
類可用於在表上創建部分索引。我有一張桌子,我希望title
,blog
& category
的組合是唯一的。但是,如果沒有提供類別,標題&的組合應該仍然是唯一的。用Django 1.7創建部分索引
class Post(models.Model):
title = models.CharField(max_length=200)
blog = models.ForeignKey(Blog)
category = models.ForeignKey(Category, null=True, blank=True)
我可以通過部分索引(如下面顯示的SQL)來實現這個約束。如果我使用Django 1.7遷移,我在哪裏添加此代碼?
CREATE UNIQUE INDEX idx1
ON Post (title, blog_id, category_id)
WHERE category_id IS NOT NULL;
CREATE UNIQUE INDEX idx2
ON Post (title, blog_id)
WHERE category_id IS NULL;
謝謝。我無法在文檔中找到它。何時以及如何使用'sql'&'reverse_sql'參數? – user4150760 2014-10-17 04:04:51
@ user4150760:'sql'參數是創建索引的字符串,就像您在上面給出的一樣。如果您希望能夠回滾遷移,請提供'reverse_sql'參數。在這種情況下,這將是等效的「DROP INDEX ...」命令。 'state_operations'參數在這裏不適用。 – 2014-10-17 05:33:52