Отправка отфильтрованных данных с помощью django по электронной почте
Я хочу отфильтровать данные студентов по навыкам в вакансии и затем отправить их компании, которая разместила требования в вакансии, по электронной почте. есть ли у кого-нибудь идеи по этому поводу.
** Модель**
class Student(models.Model):
name = models.CharField(max_length=50)
skills = models.ManyToManyField(Skill)
passout = models.ManyToManyField(Passout)
email = models.EmailField(max_length=254 ,null = True)
resume = models.ImageField(upload_to='media/resume', height_field=None, width_field=None, max_length=None , null=True)
create_date = models.DateTimeField('created date',auto_now_add=True)
def __str__(self):
return self.name
class Company(models.Model):
comp_name = models.CharField(max_length=50)
loc = models.CharField(max_length=50)
hr_name = models.CharField(max_length=50)
hr_email = models.EmailField(max_length=254)
def __str__(self):
return self.comp_name
class Vacanccy(models.Model):
com_name = models.ForeignKey(Company, on_delete=models.CASCADE)
skillreq = models.ManyToManyField(Skill)
yearofpass = models.ManyToManyField(Passout)
title = models.CharField(max_length=255)
expiry_date = models.CharField(max_length=50)
def __str__(self):
return str(self.com_name)
На изображении выше 1-я вкладка - это студент, 2-я - компания, 3-я - вакансия
В таблице вакансий две компании разместили свои требования. Первая компания имеет соответствующий профиль rini, вторая remya
Если мы отфильтруем данные и они должны быть отправлены в соответствующую компанию, например rini details to dell и remya details to redmi
Мог бы быть лучший способ! но попробовал. и этот блок кода отправит по почте путь к резюме, а не фактический файл.
from django.core.mail import send_mass_mail
from django.http.response import JsonResponse
#its support function to convert queryset into dict
def get_dict_from_quryset(key, val, records):
dict = {}
for record in records:
dict[record[key]] = record[val]
return dict
def your_function_name(request):
mail_data = []
vacancies = Vacanccy.objects.all().values("com_name_id", "com_name__comp_name", "skillreq", "skillreq__name", "yearofpass__year")
skills_ids = list(vacancies.values_list("skillreq", flat=True))
comp_ids = list(set(vacancies.values_list("com_name_id", flat=True)))
pass_years = list(vacancies.values_list("yearofpass", flat=True))
comp_details = {}
companies = Company.objects.filter(id__in=comp_ids).values("id","hr_email")
dict_companies = get_dict_from_quryset("id", "hr_email", companies)
vacancy_dict = {}
for data in vacancies:
vacancy_dict[data['skillreq']] = data['com_name_id']
applicable_student_data = Student.objects.filter(skills__in=skills_ids, passout__in=pass_years).values("id","name", "resume", 'skills')
repeat_student_id = []
for student in applicable_student_data:
if student['skills'] in vacancy_dict and student['id'] not in repeat_student_id:
company_id = vacancy_dict[student['skills']]
if company_id in dict_companies:
email_id_hr = dict_companies[company_id]
mail_content = ('Subject', student['resume'], 'yourrrr.from@gmail.com', [email_id_hr])
mail_data.append(
mail_content
)
repeat_student_id.append(student['id'])
continue
tupple_mail_data = tuple(mail_data)
if tupple_mail_data:
send_mass_mail(tupple_mail_data, fail_silently=False)
return JsonResponse({"status": "Succeed"})