django中的主键检查

时间:2011-05-17 17:16:06

标签: django django-models primary-key django-views

我在模型中有这个自定义主键:

class Personal(models.Model):
    name = models.CharField(max_length=20,primary_key=True)
    email = models.EmailField(blank=True,null=True)

现在我没有得到的是,我如何创建我的视图以便不输入重复的记录?我在网上搜索了这个,但是可以找到任何技术来创建视图。

这是视图的代码

def uregister(request):
    errors = []
    if request.method == 'POST':
        if not request.POST.get('txtName', ''):
            errors.append('Enter a Name.')
        if not errors:
            n = request.POST['txtName']
            e = request.POST['txtEmail']
            try:
                per_job = Personal(name=n, email=e)
                per_job.save()
            except IntegrityError:
                return render_to_response('gharnivas/register.html', {'exists': true}, context_instance=RequestContext(request))

            return HttpResponseRedirect('/')
        else:
            return render_to_response('register.html', {'errors': errors}, context_instance=RequestContext(request))

如何告知用户该名称已存在?

3 个答案:

答案 0 :(得分:2)

Catch the inevitable exception保存后,告诉他们。

答案 1 :(得分:0)

使用:

per_job.save(force_insert=True)

答案 2 :(得分:-1)

您正在寻找的是表单和表单验证:

http://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs#customizing-the-form-template

定义PersonalForm类,在表单字段定义或clean *()方法中移动验证检查,然后在模板中显示表单中的错误字段。

用于表单处理的Django书籍链接:

http://www.djangobook.com/en/2.0/chapter07/