Передача параметра URL запроса в представление создания

Я надеюсь, что это простой твик. Я читал различные темы здесь, но я пропустил очень простой шаг - как мне получить аргумент из URL запроса?

Например, URL имеет вид http://127.0.0.1:8000/registration/student/item/create/8

Определение URL - path('student/item/create/<int:pk>',views.CreateStudentBehaviorItem.as_view(),name='student_item_create'),

Мой вид класса выглядит следующим образом:

class CreateStudentBehaviorItem(LoginRequiredMixin, generic.CreateView):
    model = StudentItem

    form_class = StudentItemForm
    success_url = reverse_lazy('registration:student_item_list')

    def get_form_kwargs(self):
        kwargs = super(CreateStudentBehaviorItem, self).get_form_kwargs()
        kwargs['pk'] = self.request.GET.get('pk')    
        return kwargs

Форма:

class StudentItemForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.course = kwargs.pop('pk', 'all')
        super().__init__(*args, **kwargs)
        # Begin filtering by course ID 

        
    class Meta:
        model = StudentItem
        fields = ("item_student","behavior_category","behavior_item","response","internal_comments")
        widgets = {
        'item_student': forms.Select(attrs={'class': 'form-control'}),
        'behavior_category': forms.Select(attrs={'class': 'form-control'}),
        'behavior_item': forms.Select(attrs={'class': 'form-control'}),
        'response': forms.Select(attrs={'class': 'form-control'}),
        'internal_comments': forms.Textarea(attrs={'class': 'form-control', 'rows':5}),
        }

Я даже не дошел до фильтрации, потому что не могу получить PK из URL запроса. Мой минимальный опыт работы с Django заключается в использовании get_context_data для получения деталей URL запроса. Я надеюсь, что это простое исправление для получения значения.

Я ценю это.

попробуйте это

https://docs.djangoproject.com/en/4.0/ref/urls/#path

def get_form_kwargs(self):
    kwargs = super(CreateStudentBehaviorItem, self).get_form_kwargs()
    kwargs['pk'] = self.kwargs.get('pk')
    return kwargs
Вернуться на верх