2009-03-04 7 views
1

OK. Je me suis simplement attaché dans un noeud en essayant de créer un formulaire dans Django que je peux utiliser pour entrer des données sur un nouvel enregistrement ou en mettre à jour un existant.Débutant Django Question: Je deviens fou avec un formulaire pour créer et mettre à jour

Quelqu'un peut-il esquisser les bonnes choses que je devrais avoir dans mes formulaires, vues et urls si j'ai ce modèle? :

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

Dans une autre page que je veux un lien vers une forme qui me permet de créer une nouvelle instance d'une personne ou modifier un existant.

choses que je suis vous sentir désorienté:

  • ai-je besoin de deux lignes distinctes sur le urls.py, un lien vers le formulaire vierge, ne passe pas un identifiant et un lien vers le formulaire quand je passe l'identifiant? Ai-je besoin de deux vues différentes, l'une pour recevoir le formulaire avant qu'une instance ait été sauvegardée, et l'autre lorsque l'instance existe?

Je suis sûr que je l'ai vu faire avec un lien et une fonction dans views.py, mais je ne semble pas être en mesure de faire les choses plus. Ce qui ne semble pas au travail tente d'envoyer à la fois l'URL avec l'identifiant

/edit/id 

et sans

/edit/ 

à la même fonction de vue avec un argument par défaut pour id

def edit(request,id=0) : 
    blah 

Alors, quelle est la droite façon de le faire?

Cheers. phil

Répondre

3

Configurez votre urls.py pour capturer la variable id si inclus dans l'URL, puis vérifiez null dans votre views.py

Votre urls.py pourrait ressembler à ceci:

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

Ensuite, dans votre views.py:

def edit_person(person_id=None): 
    if(person_id): #show populated form 
    else: # show empty form 
+0

grâce, qui ressemble à ce que je cherchais – interstar

Questions connexes