Defina os dados iniciais para grandes formulários em Django

Então, eu tinha uma função de pesquisa para um site que estava construindo, primeiro tinha 4 campos, depois 6, depois 8. e o get_initial na minha visualização estava começando a parecer ridículo.

def get_initial(self):
if self.request.GET:
initial
= {
'item1', self.request.GET.get('item1', None),
'item2', self.request.GET.get('item2', None),
'item3', self.request.GET.get('item3', None),
'item4', self.request.GET.get('item4', None),
'item5', self.request.GET.get('item5', None),
'item6', self.request.GET.get('item6', None),
'item7', self.request.GET.get('item7', None)}
return initial
else:
return super(ProjectListView, self).get_initial()

E, mais cedo ou mais tarde, vai ficar cada vez mais longo

Então, perguntei ao outro desenvolvedor se havia alguma maneira menos retardada de fazer isso.

E o código se tornou

def get_initial(self):
if self.request.GET:
initial
= self.request.GET.dict()
return initial
else:
return super(ProjectListView, self).get_initial()

Muito melhor.