1 year ago
#333977
Pranav Sharma
How to permanently store the data from my django website into a sqlite3 database?
I am trying to build a Resume Parser website using Django which is connected with a SQLite3 database. The parsed data from the resumes I upload gets stored in the database but whenever I refresh my website it disappears. What I want is to permanently save that parsed data into my database and whenever new data is being added, it should have the previous data and the new data should be added to it. I am new to Django, so this is something I don't know. Any help would be appreciated. I am including my models.py file below.
from django.db import models
from django import forms
from django.forms import ClearableFileInput
# for deleting media files after record is deleted
from django.db.models.signals import post_delete
from django.dispatch import receiver
class Resume(models.Model):
resume = models.FileField('Upload Resumes', upload_to='resumes/')
name = models.CharField('Name', max_length=255, null=True, blank=True)
email = models.CharField('Email', max_length=255, null=True, blank=True)
mobile_number = models.CharField('Mobile Number', max_length=255, null=True, blank=True)
education = models.CharField('Education', max_length=255, null=True, blank=True)
skills = models.CharField('Skills', max_length=1000, null=True, blank=True)
company_name = models.CharField('Company Name', max_length=1000, null=True, blank=True)
college_name = models.CharField('College Name', max_length=1000, null=True, blank=True)
designation = models.CharField('Designation', max_length=1000, null=True, blank=True)
experience = models.CharField('Experience', max_length=1000, null=True, blank=True)
uploaded_on = models.DateTimeField('Uploaded On', auto_now_add=True)
total_experience = models.CharField('Total Experience (in Years)', max_length=1000, null=True, blank=True)
class UploadResumeModelForm(forms.ModelForm):
class Meta:
model = Resume
fields = ['resume']
widgets = {
'resume': ClearableFileInput(attrs={'multiple': True}),
}
#delete the resume files associated with each object or record
@receiver(post_delete, sender=Resume)
def submission_delete(sender, instance, **kwargs):
instance.resume.delete(False)
The views.py file is below
from django.shortcuts import render, redirect
from pyresparser import ResumeParser
from .models import Resume, UploadResumeModelForm
from django.contrib import messages
from django.conf import settings
from django.db import IntegrityError
from django.http import HttpResponse, FileResponse, Http404
import os
def homepage(request):
if request.method == 'POST':
Resume.objects.all().delete()
file_form = UploadResumeModelForm(request.POST, request.FILES)
files = request.FILES.getlist('resume')
resumes_data = []
if file_form.is_valid():
for file in files:
try:
# saving the file
resume = Resume(resume=file)
resume.save()
# extracting resume entities
parser = ResumeParser(os.path.join(settings.MEDIA_ROOT, resume.resume.name))
data = parser.get_extracted_data()
resumes_data.append(data)
resume.name = data.get('name')
resume.email = data.get('email')
resume.mobile_number = data.get('mobile_number')
if data.get('degree') is not None:
resume.education = ', '.join(data.get('degree'))
else:
resume.education = None
resume.company_names = data.get('company_names')
resume.college_name = data.get('college_name')
resume.designation = data.get('designation')
resume.total_experience = data.get('total_experience')
if data.get('skills') is not None:
resume.skills = ', '.join(data.get('skills'))
else:
resume.skills = None
if data.get('experience') is not None:
resume.experience = ', '.join(data.get('experience'))
else:
resume.experience = None
resume.save()
except IntegrityError:
messages.warning(request, 'Duplicate resume found:', file.name)
return redirect('homepage')
resumes = Resume.objects.all()
messages.success(request, 'Resumes uploaded!')
context = {
'resumes': resumes,
}
return render(request, 'base.html', context)
else:
form = UploadResumeModelForm()
return render(request, 'base.html', {'form': form})
python
django
sqlite
parsing
resume
0 Answers
Your Answer