Выводим FormView и DetailView в одном шаблоне

745 0

Бывает необходимо объединить в одном шаблоне FormView и DetailView.

Порыв интернет нашел рабочее решение на stackoverflow.com

# forms.py
from django import forms
class MyForm(forms.ModelForm): class Meta: model = ModelFormView fields = '__all__'
# views.py
from django.views.generic import DetailView, FormView
class MyDetailView(DetailView): template_name = 'MyTemplate.html' model = ModelDetailView def get_object(self): ... def get_context_data(self, **kwargs): context = super(MyDetailView, self).get_context_data(**kwargs) context['myform'] = MyForm return context class MyFormView(FormView): form_class = MyForm def get_success_url(self): item = self.request.POST['item'] ... ModelFormView.objects.create( item=item, ... ) return '/'
# MyTemplate.html
    ...
    <form method="post" action="{% url "myform" %}">{% csrf_token %}

        {{ myform }}
        <input type="submit" value="Отправить" class="btn btn-default"/>

    </form>
... 
# urls.py
from django.views.decorators.http import require_POST
urlpatterns = patterns('', ... url(r'^detailview/$', MyDetailView.as_view()), url('^formview/$', require_POST(MyFormView.as_view()), name='myform'), ... )

Если у кого есть более красивые решения, например что-то типа как тут: djangoproject.com делитесь!

Комментарии

Контактные данные

+7 (903) 612-13-42
 Россия, г. Москва