Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django中的主键检查_Django_Django Models_Primary Key_Django Views - Fatal编程技术网

django中的主键检查

django中的主键检查,django,django-models,primary-key,django-views,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): er

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

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))

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

保存后,告诉他们。

您要查找的是表单和表单验证:

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

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

使用:

per_job.save(force_insert=True)

我已经更新了views.py,如问题所示。但现在的问题是,数据被覆盖,没有显示任何主键异常。!!这在shell级别的对象创建中甚至是相同的。
primary_键
没有帮助它使其成为唯一的:(对。这是因为主键不会使其唯一。如果您输入一个具有相同主键的值,则它将替换现有记录。返回自动主键,将字段改为唯一。我不会询问表单提交或用法。请参考我的问题。问题是,我如何检查主键约束!!好的..被“视图创建”和“告诉用户”弄糊涂了。无论如何,如果你有一个关于个人模型的PersonalForm,它应该尊重模型中存在的主键=真约束,并且应该在表单实例中填写错误字段。我认为表单是正确的方法,你似乎没有使用它。