Печать 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)
Проблема решена с помощью обходного пути... но все еще не объяснена