У объекта "JobPost" нет атрибута 'job_type'
У меня есть simple view для создания пользовательских заданий и публикации их на job_portal, но я получаю нижеупомянутую ошибку, я работаю с полями многие-ко-многим и просмотрел документацию, set метод не работает, похоже, я выложил трассировку, но она указывает на странную ошибку, иностранное, которое он упоминает, уже установлено в null, заранее спасибо
def create_job(request):
company_ = Company.objects.values_list('name', flat=True)
if request.method == 'POST':
# getting company by name for reference
job_title = request.POST['job_title']
company_name = request.POST['company_name']
company = get_object_or_404(Company, name__iexact=company_name)
address = request.POST.get('street_addr')
city = request.POST['city']
state = request.POST['state']
country = request.POST['country']
zip_ = request.POST.get('zip_code')
skill_names = request.POST.getlist('skill_name')
start_salary = request.POST.get('salary_start')
end_salary = request.POST.get('salary_end')
# create job skills if not already present inside DB
print(skill_names)
skill_list = []
for skill in skill_names:
skill_nam, created = Skillset.objects.get_or_create(skill_name__iexact=skill,defaults={
'skill_name' : skill
})
skill_list.append(skill_nam)
job_loc = JobLocation(address=address, city=city,
state=state, country=country, zip_code=zip_)
job_loc.save()
job_descrip = request.POST['job_descrip']
job_skill_ = request.POST.getlist('job_skill_level')
job_pst = JobPost(title=job_title,
cmpny_name=company, job_description=job_descrip, salary_start=start_salary,salary_end=end_salary)
job_pst.job_posters.set(request.user) <--- i am getting error here
job_pst.save()
#skill_list has skill names
job_skill_set = []
for job_skill_name, job_level in zip(skill_list, job_skill_):
skil_set = Skillset.objects.filter(skill_name=job_skill_name)
job_skillset = Job_Skillset(job_post=job_pst, skill_level=job_level)
job_skillset.skill.set(skil_set)
job_skill_set.append(job_skillset)
Job_Skillset.objects.bulk_create(job_skill_set)
messages.add_message(request,messages.SUCCESS,'Job post successfully submitted!')
return redirect('/dashboard/')
return render(request, 'company/company_entry.html', context={
'contxt': 'job_contxt',
'company': company_,
# 'skills_req': job_skill,
})
Trace
Traceback (most recent call last):
File "C:\Users\atifs\Documents\job_portal\jobportal-env\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\atifs\Documents\job_portal\jobportal-env\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\atifs\Documents\job_portal\jobportal\job_management\views.py", line 60, in create_job
job_pst.job_posters.set(request.user)
File "C:\Users\atifs\Documents\job_portal\jobportal-env\lib\site-packages\django\db\models\fields\related_descriptors.py", line 536, in __get__
return self.related_manager_cls(instance)
File "C:\Users\atifs\Documents\job_portal\jobportal-env\lib\site-packages\django\db\models\fields\related_descriptors.py", line 851, in __init__
raise ValueError('"%r" needs to have a value for field "%s" before '
File "C:\Users\atifs\Documents\job_portal\jobportal-env\lib\site-packages\django\db\models\base.py", line 521, in __repr__
return '<%s: %s>' % (self.__class__.__name__, self)
File "C:\Users\atifs\Documents\job_portal\jobportal\job_management\models.py", line 24, in __str__
return str(self.job_type)
Exception Type: AttributeError at /create_job/
Exception Value: 'JobPost' object has no attribute 'job_type'
Ваша ошибка находится здесь:
File "C:\Users\atifs\Documents\job_portal\jobportal\job_management\models.py", line 24, in __str__
return str(self.job_type)
Итак, я полагаю, что в модели JobPost
есть метод def __str__()
, который вы переопределяете, и в нем есть ошибка в использовании несуществующего атрибута под названием job_type
.
Сначала посмотрите на этот метод.
Предупреждение о стиле моего собственного кода: используйте black
для автоформатирования вашего кода, он будет выглядеть гораздо более читабельным! 🙌