Раскручивая свои собственные общие взгляды в Django

В документации Django упоминается в базовых представлениях на основе классов, из которых состоит DetailView: View, SingleObjectMixin и SingleObjectTemplateResponseMixin. Я экспериментирую с этим, поскольку меня интересует создание универсального представления, которое будет выполнять представление object_detail с ModelForm, чтобы строки моей модели могли генерироваться автоматически.

Чтобы попытаться дублировать DetailView, я попытался создать класс следующим образом:

from django.views.generic import list_detail, View
from django.views.generic.detail import (SingleObjectMixin,
    SingleObjectTemplateResponseMixin, BaseDetailView)

class formdisplay(View,SingleObjectMixin,SingleObjectTemplateResponseMixin): pass

Когда я использую formdisplay вместо list_detail.object_detail, я получаю сообщение об ошибке

TypeError at /inpatient-detail/4/
__init__() takes exactly 1 non-keyword argument (2 given)

Любые намеки на то, как это сделать?

Кроме того, где находится документация о том, как писать операторы импорта? Мне пришлось искать в Google, что импортировать, так как я не смог найти это в документации.

Заранее спасибо Стив

1 ответ

Решение

Так как документация django об универсальном представлении на основе классов все еще не очень современна, лучше всего получить больше информации о них, это просмотреть исходный код; для создания / обновления просмотров это хорошее начало.

При наследовании от нескольких классов / миксинов вы также должны следить за их порядком - если вы посмотрите на исходный код django, вы увидите, что они ставят миксины перед другими классами!

Мне не совсем понятно, чего вы пытаетесь достичь, но если ваша цель - отобразить форму с данными из существующего объекта, django.views.generic.update.UpdateView должен быть твоим другом!

Другие вопросы по тегам