django - Django CreateView:'str'对象不可调用
问题描述
我正在尝试使用 django's CreateView
,但出现以下错误:
File "/Users/PycharmProjects/gusta/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 33, in get_form
return form_class(**self.get_form_kwargs())
TypeError: 'str' object is not callable
视图.py:
from django.views.generic import ListView, CreateView, DeleteView, DetailView, UpdateView
from .models import Employee, Event, detailEvent, Department, Poste
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse, reverse_lazy
# ----------------------------------------------------- Views for postes.
class PostelistView(LoginRequiredMixin, ListView):
template_name = "postes/post_list.html"
context_object_name = "Poste"
def get_queryset(self):
# initial queryset of leads for the entire organisation
queryset = Poste.objects.all()
return queryset
class PosteCreateView(LoginRequiredMixin, CreateView):
template_name = "postes/post_create.html"
form_class = "Poste"
def get_success_url(self):
return reverse_lazy("employee:post_list")
def form_valid(self, form):
instance = form.save(commit=False)
instance.save()
self.Poste = instance
return super(PosteCreateView, self).form_valid(form)
我的模型.py
from django.utils.translation import ugettext_lazy as _
class Poste(models.Model):
intitule = models.TextField(_("Name"), max_length=250, default='')
为什么会这样?
解决方案
在PosteCreateView
中,您设置
form_class = "Poste"
这不是一个类,它是一个字符串。Django 期望它是一个类,稍后会尝试实例化一个对象。您可以在错误消息中看到这一点,它为您提供了发生异常的行:
return form_class(**self.get_form_kwargs())
要解决它,请设置form_class
为实际类:
form_class = Poste
推荐阅读
- c# - 尝试访问 DataContext 时出现 System.ObjectDisposedException
- spring-boot - 在 @SpringBootTest 中设置类时,骆驼 @MockEndpoints 停止工作
- kubernetes - Kubernetes - 显示命令帮助,但仅显示示例
- azure - 在 Azure 和 MailNickname 中创建安全组
- node.js - 如何更新 mongo 上的许多文档并返回更新后的文档?
- c# - 为什么我听不到来自其他订户 SIP 的声音?
- pandas - 在熊猫中左连接时将行转换为新列
- javascript - 你如何正确地“重置”一个
- javascript - TypeError:stream_1.pipeline 不是函数
- android - 连接 Pepper 机器人