Looping, em formas Django

votos
0

Eu apenas comecei a construção de uma aplicação protótipo no Django. Comecei por trabalhar com o tutorial aplicação Django no site do Django que foi muito útil, e me deu o que eu precisava para começar. Agora eu tenho um par do que eu espero são perguntas muito simples:

Eu quero colocar um loop em views.py, looping sobre um conjunto de variáveis ​​que foram passadas a partir de um formulário. Então, eu tenho uma carga de itens no formulário HTML, cada um dos quais tem uma lista drop-down Selecionar para as pessoas para selecionar uma pontuação de 0-10, como este:

<select name=score1>
  <option value=0 SELECTED>No score</option>
  <option value=1>1</option>
  <option value=2>2</option>
  <option value=3>3</option>
  <option value=4>4</option>
  <option value=5>5</option>
  <option value=6>6</option>
  <option value=7>7</option>
  <option value=8>8</option>
  <option value=9>9</option>
  <option value=10>10</option>
</select>

Então, eu tenho, digamos, 100 dessas variáveis, score1, score2, score3, ..., score99, score100. Quando o formulário é enviado, eu quero percorrer cada uma dessas variáveis ​​e ver se ele foi definido (ou seja, não é 0) e se assim for, eu quero armazenar esse valor em um local adequado no banco de dados. Meu problema é que eu não consigo descobrir como fazer um loop através dessas variáveis. Eu estou supondo que eu quero algo parecido com isto:

for o in request.POST.all

endfor

mas então eu não sou realmente certo o que fazer com isso.

Eu não estou procurando alguém para escrever o código para mim, realmente: Eu só gostaria de alguma orientação sobre como escrever um loop como este em python / Django, e também talvez alguns ponteiros como a um guia de referência bom I pode ver on-line ou comprar que vai me dar acesso a esse tipo de coisa.

Além disso, o objeto de seleção acima eu criei praticamente à mão, e eu realmente gostaria de ser capaz de ue um loop para gerá-lo no modelo em primeiro lugar. Meu modelo tem atualmente a seguinte:

<table>
{% for movie in movie_list %}
  <tr>
  <td> ` movie ` </td>
  <td>
       <select name=score` movie`.`id `>
         <option value=0 SELECTED>No score</option>
         <option value=1>1</option>
         <option value=2>2</option>
         <option value=3>3</option>
         <option value=4>4</option>
         <option value=5>5</option>
         <option value=6>6</option>
         <option value=7>7</option>
         <option value=8>8</option>
         <option value=9>9</option>
         <option value=10>10</option>

       </select>
  </td></tr>

{% endfor %}
</table>

Eu sinto que deve haver uma maneira de criar um loop simples que conta de 1 a 10 que geraria mais dessas opções para mim, mas eu não consigo descobrir como fazer isso ...

Publicado 18/11/2008 em 12:05
fonte usuário
Em outras línguas...                            


3 respostas

votos
7

Você precisa olhar para as Django formas .

Você nunca deve construir sua própria forma assim.

Você deve declarar uma classe de formulário que inclui um ChoiceField e fornecer o domínio de escolhas para esse campo. Tudo vai acontecer praticamente automaticamente a partir de lá.

As escolhas, BTW, deve ser definido no seu modelo como o intervalo de valores para esse campo Modelo.

Sua página só inclui `form`. Django cria o formulário com as escolhas e decodifica as escolhas a um resultado final.

Respondeu 18/11/2008 em 12:27
fonte usuário

votos
1

Siga os conselhos S.Lotts em formulários, que vai lhe poupar tempo, a longo prazo para fazê-las o Django caminho agora. Para esse ciclo está procurando:

<select name="score` movie`.`id `">
    <option value=0 SELECTED>No score</option>
  {% for i in range(1, 11) %}
    <option value=` i `>` i `</option>
  {% endfor %}
</select>
Respondeu 18/11/2008 em 23:56
fonte usuário

votos
1

Eu sinto que deve haver uma maneira de criar um loop simples que conta de 1 a 10 que geraria mais dessas opções para mim, mas eu não consigo descobrir como fazer isso ...

Se você não quiser usar formulários Django (porque btw?), Confira este tag intervalo personalizado ou apenas passar um intervalo (1, 11) objeto em seu modelo e usá-lo no {% for %}loop.

Respondeu 18/11/2008 em 12:33
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more