Django 如何限制在form.save()之前在表中插入重复值
我想限制在我的数据库中重复输入“企业名称”。因为我已经创建了一个表单,函数正在从模板中获取值,并且我正在将表单数据保存到数据库中,它工作正常,但在插入数据库之前,它不会检查重复条目。所以,我想要的是代码将检查“企业名称”是否已经存在于数据库中。如果数据与代码一起出现,则应给出消息,说明数据已与此名称一起出现,否则将保存数据 这是项目中的模型 我在视图中编写的函数Django 如何限制在form.save()之前在表中插入重复值,django,Django,我想限制在我的数据库中重复输入“企业名称”。因为我已经创建了一个表单,函数正在从模板中获取值,并且我正在将表单数据保存到数据库中,它工作正常,但在插入数据库之前,它不会检查重复条目。所以,我想要的是代码将检查“企业名称”是否已经存在于数据库中。如果数据与代码一起出现,则应给出消息,说明数据已与此名称一起出现,否则将保存数据 这是项目中的模型 我在视图中编写的函数 @login_required def supplier_add(request, template_name='SupplierDe
@login_required
def supplier_add(request, template_name='SupplierDetails.html'):
if request.method == 'POST':
form = SupplierForm(request.POST)
# print("abc")
if form.is_valid():
form.save()
# return HttpResponse("ok saved")
return redirect('inventory_management:supplier_manage')
else:
form = SupplierForm()
# print(form)
# duplicates = SupplierModel.objects.values('business_name').annotate(name_count=Count('business_name')).filter(name_count__gt=1)
# print(duplicates)
# records = SupplierModel.objects.filter(business_name__in=[item['business_name'] for item in duplicates])
return render(request, template_name, {'form': form})
模板
{% extends "base.html" %}
{% block content %}
{% load staticfiles %}
<!--<meta name="viewport" content="width=device-width, initial-scale=1">-->
<!--<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">-->
<!--<link rel="stylesheet" href="{% static '/css/w3.css' %}">-->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato">
<div class="container">
<div class="row">
<section class="col-md-12">
<h1 class="page-header">Add Supplier Details
<small>   Here you can add/edit basic info of Item supplier</small>
</h1>
<div class="row text-center">
<div class="col-md-12">
<a class="btn btn-primary" href="{% url 'inventory_management:supplier_manage' %}">Manage Supplier</a>
</div>
</div>
<hr>
<!-- Table content -->
<div class="row">
<div class="form-group">
<form class="form-horizontal" method="post" enctype="multipart/form-data" >{% csrf_token %}
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Mine Specific Details</font></legend>
<div class="form-group col-md-12">
<div class="col-md-12">
<div class="col-md-4">
<label for="" class="" id="">Choose Mine:</label>
</div>
<div class="col-md-8">
{{form.mine_id}}
</div>
</div>
</div>
</fieldset>
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Business Details</font></legend>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_business_name" class="" id="">Business Name</label>
</div>
<div class="col-md-8">
{{form.business_name}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="id_business_website" class="" id="">Business Website</label>
</div>
<div class="col-md-8">
{{form.business_website}}
</div>
</div>
</div>
</fieldset>
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Contact Person</font></legend>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_name" class="" id="">Name<font color="red">*</font></label>
</div>
<div class="col-md-8">
{{form.name}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="mobile_no" class="" id="">Mobile Number</label>
</div>
<div class="col-md-8">
{{form.mobile_no}}
</div>
</div>
</div>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_email" class="" id="">Email</label>
</div>
<div class="col-md-8">
{{form.email}}
</div>
</div>
</div>
</fieldset>
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Billing Address</font></legend>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="pin" class="" id="">Pincode</label>
</div>
<div class="col-md-8">
{{form.pincode}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="address" class="" id="">Address</label>
</div>
<div class="col-md-8">
{{form.address}}
</div>
</div>
</div>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="landmark" class="" id="">Landmark</label>
</div>
<div class="col-md-8">
{{form.landmark}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="id_area" class="" id="">Area</label>
</div>
<div class="col-md-8">
{{form.area}}
</div>
</div>
</div>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_city" class="" id="">City</label>
</div>
<div class="col-md-8">
{{form.city}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="id_state" class="" id="">State</label>
</div>
<div class="col-md-8">
{{form.state}}
</div>
</div>
<br/><br/> <br/><br/>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_map_location" class="" id="">Map Location</label>
</div>
<div class="col-md-8">
{{form.map_loc}}
</div>
</div>
</div>
</fieldset>
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Tax Details</font></legend>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_pan" class="" id="">PAN /TIN</label>
</div>
<div class="col-md-8">
{{form.pan}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="id_gstin" class="" id="">GSTIN</label>
</div>
<div class="col-md-8">
{{form.gstin}}
</div>
</div>
</div>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_notes" class="" id="">Notes</label>
</div>
<div class="col-md-8">
{{form.notes}}
</div>
</div>
</div>
</fieldset>
<div class="text-center">
<input type="submit" class="btn btn-primary" value="Submit"/>
</div>
</form>
</div>
</div><!--end Table content -->
</section>
</div>
</div>
<style>
fieldset.scheduler-border {
border: solid 1px #DDD !important;
padding: 0 10px 10px 10px;
border-bottom: none;
}
legend.scheduler-border {
width: auto !important;
border: none;
font-size: 14px;
}
fieldset ul {list-style:none}
</style>
<script>
$(document).ready(function(){
$("#id_mine_id").addClass('form-control');
});
$(function() {
$( ".datepicker" ).datepicker({
changeMonth: true,
changeYear: true,
yearRange: "1900:2012",
// You can put more options here.
});
});
</script>
{% endblock %}
{%extends“base.html”%}
{%block content%}
{%load staticfiles%}
添加供应商详细信息
   ;您可以添加/编辑物料供应商的基本信息
{%csrf_令牌%}
地雷具体细节
选择我的:
{{form.mine_id}
业务详情
企业名称
{{form.business_name}
商业网站
{{form.business_网站}
联系人
名字*
{{form.name}
手机号码
{{form.mobile{u no}
电子邮件
{{form.email}
帐单地址
枕形
{{form.pincode}
地址
{{form.address}
地标
{{form.landmark}}
地区
{{form.area}}
城市
{{form.city}
陈述
{{form.state}}
地图位置
{{form.map_loc}}
{% extends "base.html" %}
{% block content %}
{% load staticfiles %}
<!--<meta name="viewport" content="width=device-width, initial-scale=1">-->
<!--<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">-->
<!--<link rel="stylesheet" href="{% static '/css/w3.css' %}">-->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato">
<div class="container">
<div class="row">
<section class="col-md-12">
<h1 class="page-header">Add Supplier Details
<small>   Here you can add/edit basic info of Item supplier</small>
</h1>
<div class="row text-center">
<div class="col-md-12">
<a class="btn btn-primary" href="{% url 'inventory_management:supplier_manage' %}">Manage Supplier</a>
</div>
</div>
<hr>
<!-- Table content -->
<div class="row">
<div class="form-group">
<form class="form-horizontal" method="post" enctype="multipart/form-data" >{% csrf_token %}
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Mine Specific Details</font></legend>
<div class="form-group col-md-12">
<div class="col-md-12">
<div class="col-md-4">
<label for="" class="" id="">Choose Mine:</label>
</div>
<div class="col-md-8">
{{form.mine_id}}
</div>
</div>
</div>
</fieldset>
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Business Details</font></legend>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_business_name" class="" id="">Business Name</label>
</div>
<div class="col-md-8">
{{form.business_name}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="id_business_website" class="" id="">Business Website</label>
</div>
<div class="col-md-8">
{{form.business_website}}
</div>
</div>
</div>
</fieldset>
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Contact Person</font></legend>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_name" class="" id="">Name<font color="red">*</font></label>
</div>
<div class="col-md-8">
{{form.name}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="mobile_no" class="" id="">Mobile Number</label>
</div>
<div class="col-md-8">
{{form.mobile_no}}
</div>
</div>
</div>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_email" class="" id="">Email</label>
</div>
<div class="col-md-8">
{{form.email}}
</div>
</div>
</div>
</fieldset>
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Billing Address</font></legend>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="pin" class="" id="">Pincode</label>
</div>
<div class="col-md-8">
{{form.pincode}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="address" class="" id="">Address</label>
</div>
<div class="col-md-8">
{{form.address}}
</div>
</div>
</div>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="landmark" class="" id="">Landmark</label>
</div>
<div class="col-md-8">
{{form.landmark}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="id_area" class="" id="">Area</label>
</div>
<div class="col-md-8">
{{form.area}}
</div>
</div>
</div>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_city" class="" id="">City</label>
</div>
<div class="col-md-8">
{{form.city}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="id_state" class="" id="">State</label>
</div>
<div class="col-md-8">
{{form.state}}
</div>
</div>
<br/><br/> <br/><br/>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_map_location" class="" id="">Map Location</label>
</div>
<div class="col-md-8">
{{form.map_loc}}
</div>
</div>
</div>
</fieldset>
<fieldset class="scheduler-border">
<legend class="scheduler-border"><font color="blue">Tax Details</font></legend>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_pan" class="" id="">PAN /TIN</label>
</div>
<div class="col-md-8">
{{form.pan}}
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<label for="id_gstin" class="" id="">GSTIN</label>
</div>
<div class="col-md-8">
{{form.gstin}}
</div>
</div>
</div>
<div class="form-group col-md-12">
<div class="col-md-6">
<div class="col-md-4">
<label for="id_notes" class="" id="">Notes</label>
</div>
<div class="col-md-8">
{{form.notes}}
</div>
</div>
</div>
</fieldset>
<div class="text-center">
<input type="submit" class="btn btn-primary" value="Submit"/>
</div>
</form>
</div>
</div><!--end Table content -->
</section>
</div>
</div>
<style>
fieldset.scheduler-border {
border: solid 1px #DDD !important;
padding: 0 10px 10px 10px;
border-bottom: none;
}
legend.scheduler-border {
width: auto !important;
border: none;
font-size: 14px;
}
fieldset ul {list-style:none}
</style>
<script>
$(document).ready(function(){
$("#id_mine_id").addClass('form-control');
});
$(function() {
$( ".datepicker" ).datepicker({
changeMonth: true,
changeYear: true,
yearRange: "1900:2012",
// You can put more options here.
});
});
</script>
{% endblock %}
if SupplierModel.objects.filter(business_name=form.cleaned_data['business_name'], ).exists():
...
business_name = models.CharField(max_length=100,null=True,blank=True, unique=True)