在我的 models.py 中,我有一个字段:
content_type = models.CharField(u"Content type", max_length=20)
如您所见,这是强制性的。但我想自动给它赋值,所以我这样做了:
def clean_fields(self, *args, **kwargs):
print(kwargs)
self.content_type = "Whatever"
但是在 Django 的管理中,我收到一个验证错误,告诉我该字段是必需的。然而,当我查看 kwargs 的内容时,我得到:
{'exclude': ['id', 'created_on', 'modified_on', 'content_type', 'content_ptr']}
所以我的问题是:1) 为什么该字段出现在“排除”列表中?2)为什么Django会引发这个验证错误?
您可以像这样自动为模型分配一个值。
class ModelName(models.Model)
content_type = models.CharField(u"Content type", max_length=20)
def save(self, *args, **kwargs):
if not self.pk:
self.set_content_type()
super(ModelName, self).save(*args, **kwargs)
def set_content_type(self):
self.content_type = 'Whatever'
self.save()
这样,每当创建该模型的实例时,该字段就会自动获取值。clean_field 用于验证表单字段。
我是一名优秀的程序员,十分优秀!