Как передавать данные в формы Django из

Я хотел бы передать job_title из моего views.py, чтобы использовать его для запроса к базе данных в моей ModelForm в forms.py. В настоящее время я могу получить название работы из url и передать его в мой views.py. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я продолжаю получать ошибки всякий раз, когда пытаюсь запросить базу данных в ModelMultipleChoiceField, чтобы получить конкретные требования к должности для определенного названия должности. Я пытался использовать решения из некоторых статей, которые я нашел на этом сайте и в Интернете.

urls.py

 urlpatterns = [
    path('application_form/<str:job_title>/', views.application_form, name='application_form'),
]

views.py

def application_form(request, *args, **kwargs):
try:
    job_title = kwargs.get('job_title')
    get_query_data = {'job_title__job_title': job_title}
    model_obj = Requirements.objects.filter(**get_query_data)
    form = ApplicationForm(request.POST or None, model_obj)
    context = {'form': form}

    if request.method == 'GET':
        return render(request, 'requirements/job_specs.html', context)
    if request.method == 'POST':
        print(form.is_valid())
        if form.is_valid():
            form.save()
            return JsonResponse({'created': True})
    return JsonResponse(form.errors.as_json(), safe=False)
except Exception as e:
    print(e)

form = ApplicationForm(request.POST or None)
context = {'form': form}
return render(request, 'requirements/job_specs.html', context)

models.py

class Job(models.Model):
    company = models.CharField(max_length=35, default='ZICTA')
    job_title = models.CharField(max_length=40)
    description = models.TextField(max_length=250)

    def __str__(self):
        return self.job_title

class Requirements(models.Model):
    job_title = models.ForeignKey(Job, on_delete=models.CASCADE)
    required = models.CharField(max_length=250)

    def __str__(self):
        return self.required

class Applicants(models.Model):
    email = models.EmailField(max_length=30)
    required = models.ManyToManyField(Requirements)

    def __str__(self):
        return self.email

forms.py

class ApplicationForm(forms.ModelForm):

class Meta:
    model = Applicants
    fields = ['email', 'required']

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.fields['required'].queryset = kwargs.get('model_obj')
    print(self.fields['required'].queryset)

email = forms.EmailField(label='', max_length=100, required=True, widget=forms.TextInput(
    attrs={'class': 'form-group form-control input-lg ', 'placeholder': 'Email'}), )
required = forms.ModelMultipleChoiceField(queryset=None, widget=forms.CheckboxSelectMultiple)

Любая помощь будет высоко оценена. Заранее спасибо

Вернуться на верх