Я пытаюсь следовать этим SO Q & A, это именно то, что я хочу сделать, но с pk
вместо фиксированного ключа.Мои файлы ...
views.py
class JuryCreate(CreateView):
model = Jury
form_class = JuryCreateForm
def form_valid(self, form):
form.instance.customer_id = self.kwargs['pk']
form.instance.court_year_id = self.kwargs['yr']
return super().form_valid(form)
forms.py
class JuryCreateForm(ModelForm):
class Meta:
model = Jury
fields = [
'parent_jury',
#Other Fields
]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['parent_jury'].queryset = Jury.objects.filter(
customer_id = self.kwargs['pk']).filter(
court_year_id = self.kwargs['yr'])
Если я перейду прямо из view
к шаблону, явозможность доступа к набору запросов (он предоставляет объект набора запросов).Но если я пройду через ModelForm, он выдаст AttributeError: 'JuryCreateForm' object has no attribute 'kwargs'
.По сути, я считаю, что запрос не передается в ModelForm, поэтому он не может получить доступ к kwargs.Как получить первичные ключи в ModelForm для заполнения полей?
Я также попробовал варианты метода get_form_kwargs
, который, я думаю, является подходящим механизмом для передачи их в ModelForm - я просто могу 'заставить его реализовать правильно (или получить в нужном объекте класса).