Новичок Джанго Вопрос: Схожу с ума с формой для создания и обновления - PullRequest
1 голос
/ 04 марта 2009

OK. Я просто связал себя узами брака, пытаясь создать в Django форму, которую я могу использовать для ввода данных о новой записи или обновления существующей.

Может ли кто-нибудь набросать правильные вещи, которые я должен иметь в своих формах, представлениях и URL, если у меня есть эта модель? :

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

На другой странице я хочу ссылку на форму, которая позволяет мне создавать новый экземпляр человека или редактировать существующий.

Вещи, которые меня смущают:

  • мне нужны две разные строки в urls.py, одна для ссылки на пустую форму, НЕ передавая идентификатор, а другая для ссылки на форму, когда я передаю идентификатор?

  • нужны ли мне два разных представления: одно для получения формы перед сохранением экземпляра, и другое, когда экземпляр существует?

Я уверен, что видел, как это было сделано с помощью одной ссылки и одной функции в views.py, но, похоже, я больше не могу сделать это правильно. То, что не работает, пытается отправить оба URL с идентификатором

  /edit/id

и без

  /edit/ 

к той же функции представления с аргументом по умолчанию для id

 def edit(request,id=0) :
    blah

Так как же это сделать правильно ?

Приветствия. фил

1 Ответ

3 голосов
/ 04 марта 2009

Настройте ваш urls.py для захвата переменной id, если она включена в URL, а затем проверьте на null в вашем views.py

Ваш urls.py может выглядеть примерно так:

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

Тогда в твоих views.py:

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