2013-11-20 14 views
0

我有一個字段title在模型Skill繼承自CMSPlugin。我用我的Skill對象的下列屬性作爲唯一標識符:定義一個獨特的常量在Django的CMSPlugin字段在一個multilugal網站

  • title
  • language
  • placeholder.page.publisher_is_draft(天氣對應的頁面發佈或草案),以

我想阻止用戶創建這三個屬性相同的兩個實例。看起來我無法通過unique_together定義實現這一點,因爲第三個屬性不是模型的一部分。在Django CMS中是否有內置的機制來定義這樣的約束?

+1

我不認爲你可以在數據庫層面做到這一點,我認爲加上乾淨的()到您的模型或形成在那裏你驗證這種獨特性,應該解決的問題 – Paulo

+0

謝謝!這聽起來很合理,沒有人有更好的主意。如果你想要你的聲望,請將其作爲答案。 –

回答

2

當然,這是我從你的問題中收集的。

from django.core.exceptions import ValidationError 

class MyPlugin(CMSPlugin): 
    title = models.CharField(max_length=200) 
    is_draft = models.BooleanField(default=False) 

    def clean(self): 
     manager = self.__class__.objects 
     self.is_draft = self.placeholder.page.publisher_is_draft 
     if manager.filter(title=self.title, language=self.language, is_draft=self.is_draft).exists(): 
      raise ValidationError("Duplicate !!!") 
相關問題