在多语言站点中定义Django CMSPlugin字段的唯一约束

时间:2013-11-20 10:26:04

标签: django django-cms

我在title继承的模型Skill中有一个字段CMSPlugin。我使用Skill个对象的以下属性作为唯一标识符:

  • title
  • language
  • placeholder.page.publisher_is_draft(天气相应页面已发布或草稿)

我想阻止用户创建这三个属性相等的两个实例。似乎我无法通过unique_together定义实现此目的,因为第三个属性不是模型的一部分。 Django CMS中是否有内置机制来定义这样的约束?

1 个答案:

答案 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 !!!")