Объект 'function' не имеет атрибута 'as_view'

Я пытаюсь использовать представления на основе классов и получить странную ошибку. То, как я использую представление, кажется обычным способом:

Ингредиенты /models.py:

from django.db import models
from django.utils import timezone


class Ingredient(models.Model):
    name        = models.CharField(max_length=255)
    description = models.TextField()

    def get_prices():
        purchases   = self.purchase_set.all()
        prices      = [purchase.price for purchase in purchases]

Ингредиенты /views.py:

from django.shortcuts           import render, render_to_response, redirect
from django.http                import HttpResponse, HttpResponseRedirect
from django.views.generic.edit  import CreateView
from .models                    import Ingredient, Purchase

def IngredientCreateView(CreateView):
    model = Ingredient
    fields = ['all']

Ингредиенты /urls.py:

from django.conf.urls import patterns, include, url

from ingredients.views import IngredientCreateView

urlpatterns = patterns('',            
    url(r'^new_ingredient$',          IngredientCreateView.as_view(),             name='new-ingredient'),
)

я получил

AttributeError at /ingredients/new_ingredient
'function' object has no attribute 'as_view'

Я на django 1.8.5. Почему это мнение не будет работать? спасибо

Ответы

Ответ 1

IngredientCreateView должен быть классом. Таким образом, ваши views.py заменяют:

def IngredientCreateView(CreateView):

с:

class IngredientCreateView(CreateView):

Ответ 2

IngredientCreateView - это функция, а не класс.

Следующая строка

def IngredientCreateView(CreateView):

следует заменить на

class IngredientCreateView(CreateView):