Вопрос новичка Django :Схожу с ума от формы для создания и обновления

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

  •  03-07-2019
  •  | 
  •  

Вопрос

ОК.Я просто завязал себя в узел, пытаясь создать форму в 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

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

Ваше здоровье.фил

Это было полезно?

Решение

Настройте свой 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top