Печать kwargs.pop выводит правильное значение, использование его в методе принимает значение None

Я хочу передать PK в kwargs в форму :

views.py

def create_mapping_form(request, pk):
context = {
    'form': MappingForm(pk=pk)
}
return render(request, 'flows/partials/mapping_form.html', context)

В форме я получаю PK, используя :

forms.py

class MappingForm(forms.ModelForm):

    class Meta:
        model = MappingField
        fields = (
            'fl_col_number',
            'fl_col_header',
            'fl_cross_field_name',
            'fl_cross_position',
            'fl_replace_list'
        )

    def __init__(self, *args, **kwargs):
        pk = kwargs.pop('pk', 'Rien')
        super(MappingForm, self).__init__(*args, **kwargs)

        #print(pk)

        self.helper = FormHelper(self)
        self.fields['fl_replace_list'].widget.attrs[
            'placeholder'] = "Liste de tuples eg. : [('reman','ES'), ('Gasoline','Diesel')] "

        headers = GetCsvHeadersAndSamples(pk)['headers']
    [...]

Для заполнения CHOICES некоторых полей я использую метод, который возвращает dic (последняя строка выше)

headers = GetCsvHeadersAndSamples(pk)['headers']

Но что-то, что я не могу объяснить, посылает 'Rien' в GetCsvHeadersAndSamples, в то время как когда я print(pk) показывается правильное значение. (GetCsvHeadersAndSamples не является полезным, я не показываю его)

Нота: Я отображаю форму в шаблоне, используя HTMX. Похоже, что проблема не связана с HTMX, потому что когда я жестко кодирую PK, все в порядке.

Пока я не нашел ничего другого, кроме хранения значения PK в "временном" файле, но это замедляет работу моего скрипта.

Спасибо

Я перенес GetCsvHeadersAndSamples из forms.py в views.py и передал возврат GetCsvHeadersAndSamples в kwargs.

      [...]
      headers_samples = GetCsvHeadersAndSamples(pk)
      fiche_headers = fetch_fiche_headers()

      form = MappingForm(request.POST or None,
                   headers_samples=headers_samples, 
                   fiche_headers=fiche_headers)
      [...]

Затем я извлекаю их в init

    def __init__(self, *args, **kwargs):
         self.headers_samples = kwargs.pop('headers_samples', None)
         self.fiche_headers = kwargs.pop('fiche_headers', None)

Проблема решена с помощью обходного пути... но все еще не объяснена

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