我在title
继承的模型Skill
中有一个字段CMSPlugin
。我使用Skill
个对象的以下属性作为唯一标识符:
title
language
placeholder.page.publisher_is_draft
(天气相应页面已发布或草稿)我想阻止用户创建这三个属性相等的两个实例。似乎我无法通过unique_together
定义实现此目的,因为第三个属性不是模型的一部分。 Django CMS中是否有内置机制来定义这样的约束?
答案 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 !!!")