我有这样的模特:
class Item(models.Model):
number = models.CharField()
menu = models.ForeignKey(Menu)
class Meta:
unique_together = ('number', 'menu')
我想验证的是,“数字”在某些菜单中是唯一的,但忽略了大小写。例如,如果('a1', 1)
则不允许('A1', 1)
。
1)我想在模型级别上进行此验证,而不是表单。
2)我希望在数据库中存储数字,如输入中给出的数字
我的第一种方法是在模型的clean
方法中执行此操作,但FK字段menu
的值始终为None,因此我得到了RelatedObjectDoesNotExist
。这是Django 1.8的问题还是永远无法处理模型清理中的fk字段?
我注意到在save
方法中我可以访问FK,但我无法提出ValidationError
,这将为用户处理好。
验证它的最佳策略是什么?