Newbie Django Frage: Gehen verrückt mit einem Formular für die Erstellung und Aktualisierung

StackOverflow https://stackoverflow.com/questions/611575

  •  03-07-2019
  •  | 
  •  

Frage

OK. Ich band mich gerade in einem Knoten eine Form in Django zu machen versuchen, die ich verwenden können, geben Sie entweder Daten über einen neuen Datensatz oder aktualisieren Sie einen vorhandenen.

Kann jemand die richtigen Dinge umreißen ich in meinen Formularen, Ansichten und Urls haben sollte, wenn Sie dieses Modell hat? :

class Person(models.Model) :
  name = models.CharField()
  age = models.IntegerField()

In einer anderen Seite möchte ich einen Link zu einer Form, die mir eine neue Instanz einer Person können erstellen oder bearbeiten Sie einen vorhandenen.

Dinge, die ich bin immer verwirrt von:

  • brauche ich zwei verschiedene Linien auf dem urls.py, ein auf die leere Form zu verbinden, keine ID und einen an das Form zu verbinden, wenn ich die id tun passieren?

  • ich zwei verschiedene Ansichten benötigen, ein Formular zu erhalten, bevor eine Instanz gespeichert wurde, und eine, wenn die Instanz existiert?

Ich bin sicher, ich habe dies mit einem Link und einer Funktion in views.py getan gesehen, aber ich scheine nicht in der Lage sein, es nicht mehr richtig zu machen. Was scheint nicht zu Arbeit versucht, sowohl die URL mit der ID senden

  /edit/id

und ohne

  /edit/ 

auf die gleiche Ansicht Funktion mit einem Standardargument für id

 def edit(request,id=0) :
    blah
So

Was ist der rechts Weg, dies zu tun?

Prost. phil

War es hilfreich?

Lösung

Richten Sie Ihre urls.py die ID-Variable zu erfassen, wenn in der URL enthalten, dann überprüfen Sie für null in Ihrer views.py

Ihr urls.py etwas könnte wie folgt aussehen:

(r'^edit/(?P<person_id>\w+)/$', 'mysite.myapp.views.edit_person'),

Dann in Ihrem views.py:

def edit_person(person_id=None):
    if(person_id): #show populated form
    else: # show empty form
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top