Mam kreatora formularzy Django, który ładnie pracuje, tworząc zawartość jednego z moich modeli. Chcę użyć tego samego kreatora do edycji danych istniejącej treści, ale nie mogę znaleźć dobrego przykładu, jak to zrobić.Kreator formularzy Django do edycji modelu
Tutaj jest uproszczoną wersją mojego kodu projektu:
forms.py
class ProjectEssentialsForm(forms.ModelForm):
class Meta:
model = Project
fields = [
'title',
'short_description',
'who_description',
'problem_description',
'solution_description'
]
class ProjectYourInfoForm(forms.ModelForm):
class Meta:
model = Project
fields = [
'gender',
'location',
'post_code',
'sector',
]
views.py
TEMPLATES = {
'project_essentials': 'projects/essentials-form.html',
'project_your_info': 'projects/your-info-form.html',
}
class ProjectWizard(SessionWizardView):
instance = None
def get_form_instance(self, step):
"""
Provides us with an instance of the Project Model to save on completion
"""
if self.instance is None:
self.instance = Project()
return self.instance
def done(self, form_list, **kwargs):
"""
Save info to the DB
"""
project = self.instance
project.save()
def get_template_names(self):
"""
Custom templates for the different steps
"""
return [TEMPLATES[self.steps.current]]
urls.py
FORMS = [
('project_essentials', ProjectEssentialsForm),
('project_your_info', ProjectYourInfoForm),
]
urlpatterns = patterns('',
(r'^projects/add$', ProjectWizard.as_view(FORMS)),
)
widzę że istnieje ta funkcja https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/#django.contrib.formtools.wizard.views.WizardView.get_form_instance do ustawiania instancji formularza, ale nie jestem pewien, w jaki sposób chciałbyś uzyskać identyfikator modeli, aby wykonać tu wyszukiwanie i dokładnie w jaki sposób kod będzie działał.
Przykład kodu lub link do jednego byłby najbardziej doceniony.
Dzięki Pete
Próbuję wprowadzić kreatorów formularzy, utknąłem z problemem. Czy możesz pomóc: tutaj jest post: http://stackoverflow.com/questions/24173367/form-wizard-initial-data-for-edit-not-loading-properly-in-django –
Jestem w stanie załadować początkowe dane na pierwszym formularzu, ale po przesłaniu pierwszego formularza, kieruje on do stworzenia adresu URL np. z:/Item/edit/1 do/Item/create po kliknięciu submit –