[英]IntegrityError in django duplicated key
您好,我在 django 上有一个表单,我正在尝试验证它,因此它不允许重复值,截至目前,当您输入重复值时,它会在应用程序上引发此错误:
Exception Type: IntegrityError
Exception Value:
duplicate key violates uniqueness restriction «utiles_employee_user_id_key»
DETAIL: The key already exists (user_id)=(3).
这是我的表格:
class EmployeeForm(Form):
first_name = CharField(max_length=40, label=_('Nombre'))
last_name = CharField(max_length=40, label=_('Apellido'))
children = IntegerField(label=_('Cantidad de Hijos'), required=False)
email2 = EmailField(label=_('Correo electrónico personal'), required=False)
email = EmailField(label=_('Correo electrónico Corporativo'))
company = ModelChoiceField(queryset=Company.objects.all(), required=False, label=_('Empleado de'))
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=ErrorList,
label_suffix=None, empty_permitted=False, user=None):
super().__init__(data, files, auto_id, prefix, initial, error_class, label_suffix, empty_permitted)
if not user.is_staff:
self.fields['company'].queryset = Company.objects.filter(id=user.employee.company.id)
我怎么能发出一条错误消息,告诉用户它输入了重复的 object,截至目前,当我这样做时应用程序崩溃了。
编辑:我将此方法添加到表单中,但问题仍然存在。
def clean(self):
cd = self.cleaned_data['email']
user = Employee.objects.get(email2=cd)
if self.instance and not user == self.instance:
raise ValidationError('trial msg')
return cd
但现在我得到这个错误:
Exception Type: AttributeError
Exception Value:
'EmployeeForm' object has no attribute 'instance'
您可以使用clean
方法实现所需的行为。 此方法存在于Field
定义本身以及Form
中。
您可以在 Django 的文档中找到更详细的信息:
通过在存在重复数据时引发ValidationError
,它将允许您检测视图中的问题,然后显示/呈现所需的错误消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.