2013-09-10 2 views
1

Есть ли простой способ изменить экземпляр формы модели Django после ее инициализации?django change model form instance

Например, следующее будет предварительно заполнить форму в шаблоне с содержимым в настоящее время в БД для объекта с идентификатором 1:

form = exampleModelForm(instance = Model.objects.get(pk=1) 

Это будет также сохранить соответствующий объект при экономии (), а не создает новый.

Где это создаст новый объект, а не предварительно заполнить форму в шаблоне:

form = exampleModelForm() 

Как я возвращаю пустую форму из другого метода, я бы тогда хотел назначить экземпляр к нему после его создания и изменения объекта, чтобы он мог быть сохранен, и шаблон предварительно заполняется значениями, которые существуют в db. Я хочу что-то подобное, но не кажется, что я пытался работать:

form = methodThatGetsForm(somearg) 
form.instance = ExampleModel.objects.get(pk = getId(somearg)) 

Есть простая функция, что я здесь отсутствует?

ответ

1

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

form = methodThatGetsForm(somearg) 
new_form = ExampleModelForm(form.cleaned_data, instance=ExampleModel.objects.get(pk=getID(somearg))) 
new_form.save() 

Если нет, то должен быть способ, чтобы получить данные в виде словаря пар ключ/значение для полей из form вернувшихся, используя его ._meta данные. Я думаю, что если вы отправите этот словарь в форму init, он будет присваивать эти значения объекту экземпляра, как и его отправку request.POST.

Смежные вопросы