Changes between Version 8 and Version 9 of DocPtTutorial2


Ignore:
Timestamp:
10/13/2006 10:00:02 PM (9 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}}}
Back to Top