Я хочу ограничить дублирование записи "название компании" в моей базе данных. Поскольку я создал форму, функция принимает значение из шаблона, и я сохраняю данные формы в БД, и она работает нормально, но не проверяет повторяющиеся записи перед вставкой в БД. так что я хочу, чтобы код проверял «название компании», уже присутствующее в БД или нет. Если данные, представленные в коде, должны дать сообщение, что данные, уже представленные с этим именем, будут сохранены.
Это модель в проекте
class SupplierModel(models.Model):
mine_id = models.ForeignKey(MineDetails, on_delete=models.CASCADE, null=True, blank=True)
business_name = models.CharField(max_length=100,null=True,blank=True)
business_website=models.CharField(max_length=100,null=True,blank=True)
name = models.CharField(max_length=200, null=True, blank=True)
mobile_no=models.CharField(max_length=100,default='0000000000',blank=True,null=True)
email= models.EmailField()
pincode= models.TextField(blank=True, null=True)
address= models.CharField(max_length=400, null=True, blank=True)
landmark= models.CharField(max_length=400, null=True, blank=True)
area= models.CharField(max_length=200, null=True, blank=True)
city= models.TextField(default='')
state= models.CharField(max_length=100,blank=True)
map_loc= models.CharField(max_length=400, null=True, blank=True)
pan= models.CharField(max_length=200, null=True, blank=True)
gstin= models.CharField(max_length=200, null=True, blank=True)
notes= models.CharField(max_length=200, null=True, blank=True)
функция, которую я написал в представлениях
@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 %}