我的模型中有少量models.CharField
个对象,choices
属性。
就GUI而言,这工作得很好但是我想阻止代码本身choices
属性中指定的值以外的值(以保护自己免受错误)。
在尝试保存不在选项列表中的字符串时,有没有办法引发异常(我相信它会成为ValueError
)?
答案 0 :(得分:1)
你可以Rail 4.1 upgrade notes你的模型提出你自己的例外:
class MyModel:
MY_CHOICES = (
# choices here
)
myfield = models.CharField(max_length=100, choices=MY_CHOICES)
def save(self, *args, **kwargs):
choice = self.myfield
if not any(choice in _tuple for _tuple in self.MY_CHOICES):
raise ValueError('An error message.')
super(MyModel, self).save(*args, **kwargs)
答案 1 :(得分:0)
你可以使用模型清理方法,
class YourModel(models.Model):
CHOICES = ('your_choices_here',)
def clean(self):
if not any(self.field_name in item for item in self.CHOICES):
raise ValueError("Your error message here.")