Campo de formulário do Django para uma lista de strings

9

Eu preciso de um Form Field do Django , que terá uma lista de strings.

Irei nessa lista e crie um novo objeto de modelo para cada string.

Eu não posso fazer um Modelo Múltiplo de Escolha , porque os objetos do modelo não são criados até o após envio do formulário, e eu não posso fazer um Campo de Múltipla Escolha , porque eu preciso aceitar strings arbitrárias, não apenas uma série de opções pré-definidas.

Alguém sabe como fazer isso?

    
por Clay Wardell 28.11.2012 в 22:44

2 respostas

0

Eu encontrei uma solução - um pouco hacky, mas funciona por enquanto.

Depois de pegar os dados do formulário, eu armazeno a lista em uma variável:
event_locations = form_data.get('event_locations', None)

Então eu removo de form_data, então o Django Form nunca recebe a lista:

if event_locations:
   del form_data['event_locations']

Eu instancio meu formulário com form_data e manejo a lista separadamente:

f = NewEventForm(form_data)
...
for loc in event_locations:
  #create new models here

Eu percebo que isso não resolve diretamente a pergunta que fiz, porque ainda não temos um campo de formulário do Django recebendo uma lista, mas é uma maneira de passar uma lista para uma visualização que recebe um formulário e pode para lidar com isso.

    
por Clay Wardell 29.11.2012 / 19:23
5

Use apenas um campo de texto regular delimitado por vírgulas. Depois de manipular o envio do formulário na visualização, faça uma divisão de vírgula com base nesse campo. Em seguida, repita cada um deles criando e salvando um novo modelo. Não deve ser muito difícil.

    
por Robeezy 28.11.2012 / 23:30