Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django对象没有属性';计数';_Python_Django_Django Views_Django Formwizard - Fatal编程技术网

Python django对象没有属性';计数';

Python django对象没有属性';计数';,python,django,django-views,django-formwizard,Python,Django,Django Views,Django Formwizard,我正在学习django/python,我被一个问题困住了 我有一个视图:create_document.py,我想在其中计算模型类中名称详细信息的数量:NameDetails 我找不到正确的语法 这是我的型号.py代码: class NameDetails(FillableModelWithLanguageVersion): user = models.ForeignKey(User) name_details_prefix_title = models.CharField(nu

我正在学习django/python,我被一个问题困住了

我有一个视图:
create_document.py
,我想在其中计算模型类中名称详细信息的数量:
NameDetails

我找不到正确的语法

这是我的
型号.py
代码:

class NameDetails(FillableModelWithLanguageVersion):
    user = models.ForeignKey(User)
    name_details_prefix_title = models.CharField(null=True, blank=True, max_length=25)
    name_details_first_name = models.CharField(null=False, blank=False, max_length=50)
    name_details_middle_name = models.CharField(null=True, blank=True, max_length=100)
    ....
这是我的
create_document.py
代码,其中有一个django向导。我想确保用户在创建文档之前拥有多个名称:

from app_name.core.models import NameDetails

class CreateDocumentWizard(SessionWizardView):
    template_name = 'documents/document_create.html'

    form_list = [
        core_forms.CreateDocumentWizardForm01,
        core_forms.CreateDocumentWizardForm02,
        core_forms.CreateDocumentWizardForm03,
        core_forms.CreateDocumentWizardForm04,
    ]

    def get_form_kwargs(self, step=None):
        kwargs = super(CreateDocumentWizard, self).get_form_kwargs(step)
        kwargs.setdefault('user', self.request.user)
        return kwargs

    def get_context_data(self, form, **kwargs):

        name_details_count = NameDetails(user=self.request.user).count()
        if name_details_count < 1:
            return redirect(settings.MENU_DETAIL_LINK_NAME_DETAILS)
从app_name.core.models导入名称详细信息
类CreateDocumentWizard(会话向导视图):
模板名称='documents/document\u create.html'
表格列表=[
core_forms.CreateDocumentWizardForm01,
core_forms.CreateDocumentWizardForm02,
core_forms.CreateDocumentWizardForm03,
core_forms.CreateDocumentWizardForm04,
]
def get_form_kwargs(自我,步骤=无):
kwargs=super(CreateDocumentWizard,self)。获取表单(步骤)
kwargs.setdefault('user',self.request.user)
返回kwargs
def获取上下文数据(自身、表单、**kwargs):
name\u details\u count=nametails(user=self.request.user).count()
如果名称\u详细信息\u计数<1:
返回重定向(设置。菜单\详细信息\链接\名称\详细信息)
当我使用该行确定用户的NameDetails计数时:
name\u details\u count=NameDetails(user=self.request.user.count()
,我得到以下错误:

NameDetails'对象没有属性“count”


我尝试了许多排列,但我被卡住了。

此时您正在创建一个全新的
NameDetails
实例,其中
request.user
作为用户。相反,您应该在数据库中查询当前用户的现有
NameDetails
,并对其进行计数。您可以通过
NameDetails.objects
查询数据库:

name_details_count = NameDetails.objects.filter(user=self.request.user).count()

在get_context_data函数中应该是这样的:

name_details_count = NameDetails.objects.filter(user=self.request.user).count()

每次您需要进行Django查询设置时,都必须通过对象管理器对象因此:
名称详细信息.objects.
为了进行计数,您需要一个列表,以便使用
过滤器

name_details_count = NameDetails.objects.filter(user=self.request.user).count()
如果您需要一个元素,请使用
get

name_details_count = NameDetails.objects.get(user=self.request.user)
要重定向,请使用更好的方法,并确保“链接入”设置正确:

return HttpResponseRedirect(settings.MENU_DETAIL_LINK_NAME_DETAILS)

这是一个Python问题,或者更一般地说,是一个编程问题

您的线路:

name_details_count = NameDetails(user=self.request.user).count()
正在调用
NameDetails
类的构造函数,并试图调用其上不存在的函数
count
(因此为错误类型)

要获取该用户的所有
NameDetails
实例的列表,请使用:

name_details = NameDetails.objects.filter(user=self.request.user)
要获取此列表中的项数,只需使用python内置的
len()
函数,如下所示:

name_details_count = len(NameDetails.objects.filter(user=self.request.user))

knbk,谢谢-使用您的代码:
name\u details\u count=name details.objects.filter(user=request.user).count()
给出错误:未定义全局名称“request”。有什么建议吗?它需要self,因为请求不是传递给函数VAAN3713的参数,谢谢,我认为您的代码可以工作(没有返回错误),但重定向似乎不起作用-代码继续执行向导!您是否尝试调试计数结果?还要检查settings.MENU\u DETAIL\u LINK\u NAME\u DETAILS是否包含正确的URL您不能在
get\u context\u data()
中返回重定向,因为
SessionWizardView
不会将该值作为响应返回。van3713,谢谢,基本问题正在解决-只需解决重定向问题即可。