Code

Changes between Version 8 and Version 9 of DocPtTutorial2


Ignore:
Timestamp:
10/13/06 20:00:02 (8 years ago)
Author:
marvinware2005@…
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DocPtTutorial2

    v8 v9  
    209209Nesse formulário o campo "Poll" é uma "``select box``" contendo todos os "Polls" do banco de dados. Django sabe que ``ForeignKey`` devem ser representados como uma "``<select>`` box". No nosso caso, apenas um "Poll" está disponível atualmente. 
    210210 
     211Note também, o link "Add another" próximo ao campo "Poll". Todo objeto com um relacionamento ForeignKey tem esse recurso automaticamente. Quando você clica em "Add another", você verá uma janela popup com o formulário "Add poll". Se você adiciona um "Poll" nessa janela e clica em "Save", Django vai salvar o "Poll" no banco de dados e dinamicamente adiciona-lo como uma opção selecionada no formulário "Add choice" que você estava. 
     212 
     213Mas, realmente, essa é uma forma ineficiente de adicionar objetos "Choice" no sistema. Seria melhor se você pudesse adicionar vários "Choice" diretamente quando você adiciona um objeto "Poll". Vamos fazer isso acontecer. 
     214 
     215Remova a classe interna ``Admin`` do model Choice. Agora, edite o ``ForeignKey(Poll)`` campo dessa forma: 
     216 
     217    poll = models.ForeignKey(Poll, edit_inline=models.STACKED, num_in_admin=3) 
     218 
     219Isso diz ao Django: "Objetos Choice são editados na página de administração do Poll. Por padrão, providencie 3 campos para Choice". 
     220 
     221Então, altere os outros campos no model ``Choice`` para alterálos para ``core=True``:: 
     222 
     223    choice = models.CharField(maxlength=200, core=True) 
     224    votes = models.IntegerField(core=True) 
     225 
     226Isso diz ao Django: "Quando você editar um 'Choice' na pagina de administração do 'Poll' os campos 'choice' e 'vote' são requeridos. A presença de ao menos um deles significa a adição de um novo objeto "Choice" e limpar ambos os campos significa a deleção do objeto existente". 
     227 
     228Carregue a página "Add poll" para ver como ela está: 
     229 
     230.. image:: http://media.djangoproject.com/img/doc/tutorial/admin11t.png 
     231   :alt: Página "Add poll", agora com os objetos Choice 
     232   :target: http://media.djangoproject.com/img/doc/tutorial/admin11.png 
     233 
     234Ela funciona assim: há três espaços para objetos "Choice" - como foi especificado em ``num_in_admin`` - mas cada vez que você volta para a página de alteração de um objeto já criado, você tem um espaço extra. (Isso significa que não há uma quantidade fixa de quantos objetos relacionados podem ser adicionados.) Se você quisesse três espaços extras cada vez que você alterar um "Poll" você deverá usar ``num_extra_on_change=3``. 
     235 
    211236}}}