【发布时间】:2015-02-17 16:46:28
【问题描述】:
我有一个 Django 模型,我想在自定义保存时自动填充另一个字段的 md5。 它工作正常,直到在管理员中输入重复值,我得到一个 50 倍的错误,而不是一个重复的错误消息。我希望 md5 字段上的 unique=True 能够检查并捕捉到这一点。相反,我得到了数据库唯一约束错误。感觉就像我错过了一些明显的东西,但很困惑。有没有比保存更高的地方我应该检查这个?尝试了 pre_save 信号,但结果相同。
class MailList(models.Model):
email = models.CharField(max_length=400, null=False, blank=False)
md5 = models.CharField(max_length=32, null=False, blank=True, unique=True)
def save(self, *args, **kwargs):
self.md5 = md5(self.email.strip().encode('UTF-8').lower()).hexdigest()
super(MailList, self).save()
class MailListAdmin(admin.ModelAdmin):
readonly_fields = ('date_entered', 'date_modified', )
list_display = ('email',
'date_entered', 'date_modified', 'md5',
'subscriber', )
save_on_top = True
search_fields = ['email', ]
admin.site.register(MailList, MailListAdmin)
【问题讨论】:
标签: django validation model save