好的,所以我有一个这样的模型:
class Airplane(models.Model):
tail = models.ForeignKey(Tails)
wheel = models.CharField(max_length=500,blank=True)
window = models.CharField(max_length=500,blank=True)
def clean(self):
if self.tail and self.wheel and self.window:
raise ValidationError("Can't have all three, choose tail and one more")
现在,如果我使用Django管理员添加新的飞机记录。如果我将这两个字段留空并保存,则会将此Django错误指向行if self.tail and self.wheel
。
DoesNotExist at /admin/MyProject/airplane/add/
Request Method: POST
Request URL: http://44.101.44.172:8001/admin/MyProject/airplane/add/
Django Version: 1.2.5
Exception Type: DoesNotExist
Exception Value:
Exception Location: /usr/lib/python2.7/site-packages/django/db/models/fields/related.py in __get__, line 299
Python Executable: /usr/bin/python
Python Version: 2.7.0
Django不应该在运行clean之前检查是否填写了必填字段?无论如何,处理这个问题的最佳方法是什么?
答案 0 :(得分:0)
您的tails字段不接受空值。您需要向其添加null=True
才能使其正常运行。
答案 1 :(得分:0)
好的,作为解决方法,我最终在admin.py中为此模型定义custom form my validation。
我仍然不明白为什么在Django确定填写了必填字段之前调用了model.clean。好吧。