Ответ 1
IngredientCreateView
должен быть классом. Таким образом, ваши views.py заменяют:
def IngredientCreateView(CreateView):
с:
class IngredientCreateView(CreateView):
Я пытаюсь использовать представления на основе классов и получить странную ошибку. То, как я использую представление, кажется обычным способом:
Ингредиенты /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. Почему это мнение не будет работать? спасибо
IngredientCreateView
должен быть классом. Таким образом, ваши views.py заменяют:
def IngredientCreateView(CreateView):
с:
class IngredientCreateView(CreateView):
IngredientCreateView
- это функция, а не класс.
Следующая строка
def IngredientCreateView(CreateView):
следует заменить на
class IngredientCreateView(CreateView):