2010-05-30 118 views
1
class Votes(models.Model): 
    field1 = models.ForeignKey(Blah1) 
    field2 = models.ForeignKey(Blah2) 
    class Meta: 
      unique_together = (("field1","field2"),) 

我正在使用此代碼作爲我的模型之一。現在我想知道兩件事:
1.它不顯示任何錯誤,它保存了一個並非唯一的條目;那麼這段代碼是否正確?
2.如何驗證unique_together約束?Django unique_together錯誤和驗證

回答

1

對我來說沒關係。你有沒有試過unique_together = ("field1","field2")的簡單語法,以防萬一有一個微妙的錯誤?

無論哪種方式,如上所述here「它用於Django管理員並在數據庫級別執行(即相應的UNIQUE語句包含在CREATE TABLE語句中)」。

是否更新模式(使用遷移,刪除和新的syncdb或手動SQL)以添加適當的約束?

+0

我稍後添加了這個約束,而不是在創建表的過程中。所以我不得不再次創建數據庫,它工作。謝謝。但是有沒有什麼辦法可以在這種情況下增加這種約束條件,並且事情有效?還有,處理錯誤呢? – zubinmehta 2010-05-30 19:24:15

+0

聽起來像約束是由管理員優雅地強制執行的,所以在django.contrib.admin裏面捅一下可能會有所幫助。 未來,如果您必須添加unique_together約束,像South(south.aeracode.org)這樣的遷移應用程序應該能夠幫助您。 – 2010-05-30 20:35:48