Родовые представления и модели моделей на основе классов Django - PullRequest
7 голосов
/ 13 июля 2011

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

Как это делается?

Ответы [ 2 ]

3 голосов
/ 14 июля 2011

Что вы пробовали до сих пор? Представления, основанные на классах, являются довольно новыми, и в документах не так много примеров, поэтому я думаю, что вам нужно испачкать руки и поэкспериментировать!

Если вы хотите обновить существующий объект, попробуйте использовать UpdateView. Посмотрите на используемые им миксины (например, ModelFormMixin, SingleObjectMixin, FormMixin), чтобы увидеть, какие методы вы можете / должны переопределить.

Удачи!

2 голосов
/ 30 марта 2012

Самый простой способ использовать формы моделей с представлениями на основе классов - передать модель и сохранить slug / pk в URL, в этом случае вам не нужно будет писать какой-либо код представления.

url(r'^myurl/$', CreateView.as_view(model=mymodel)) 
#Creates a model form for model mymodel

url(r'^myurl/(?<pk>\w+)/$', UpdateView.as_view(model=mymodel)) 
#Creates a model form for model mymodel and updates the object having pk as specified in url

url(r'^myurl/(?<slug>\w+)/$', DeleteView.as_view(model=mymodel, slug_field="myfield")) 
#Creates a model form for model mymodel and deletes the object denoted by mymodel.objects.get(my_field=slug)

Вы также можете переопределить методы для получения более сложной логики.Вы также можете передать набор запросов вместо модельного объекта.

Другой способ - создать модель формы в forms.py, а затем передать form_class в URL как

url(r'^myurl/$', CreateView.as_view(form_class=myform)) 

Этот метод позволяет определять функции формы, а также мета-атрибуты для формы..

...