I have a model on which data imported from an excel files are saved. I want to prevent having duplicate entries,it will check the already existing data to see if they match with the ones .
My model
from django.db import models
class UserData(models.Model):
GENDER_CHOICES = (
('Male', 'Male'),
('Female', 'Female'),
)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
age = models.IntegerField()
gender = models.CharField(default='Male', choices=GENDER_CHOICES, max_length=6)
address = models.CharField(max_length=200)
class Meta:
verbose_name_plural = 'User Data'
def __str__(self):
return self.fullname()
views.py
class UploadFileForm(forms.Form):
file = forms.FileField()
def import_data(request):
if request.method == "POST":
form = UploadFileForm(request.POST,
request.FILES)
if form.is_valid():
request.FILES['file'].save_to_database(
name_columns_by_row=2,
model=UserData,
mapdict=['first_name', 'last_name', 'age', 'gender', 'address'])
return HttpResponse("OK")
else:
return HttpResponseBadRequest()
else:
form = UploadFileForm()
return render_to_response('excel/upload_form.html',
{'form': form},
context_instance=RequestContext(request))
I tried using unique_together
and also tried overriding cleaned_data
in the form but still can't prevent duplicates being added to the db.
What will be the best way to achieve this? Thanks