提问
我正在学习django/python,并被一个问题给卡住了。
我有一个视图:create_document.py
,我想在其中计算模型类NameDetails
中的名字细节数量。
但我不知道正确的写法!
这是我models.py
的代码:
python
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 wizard。我想要确定的是用户在他们能够创建文档前,至少有一个名字。
python
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)
当我使用name_details_count = NameDetails(user=self.request.user).count()
确定用户的NameDetails计数时,我得到了以下错误:
NameDetails' object has no attribute 'count'
我已经尝试了很多种组合,但现在还是卡住了。
回答1
你的get_context_data函数应该这样写:
python
name_details_count = NameDetails.objects.filter(user=self.request.user).count()
回答2
眼下你正在以request.user
为用户创建一个全新的NameDetails
实例。相反,你应该查询数据库中当前用户已有的NameDetails
,并对他们进行计数。你可以通过NameDetails.objects
查询数据库:
python
name_details_count = NameDetails.objects.filter(user=self.request.user).count()
欢迎来弦圈一起翻译StackOverflow等国外编程内容👇👇👇
翻译原文: django对象报错object has no attribute 'count'
更多Django相关内容: Django - 弦圈
更多其他趣味内容: 弦圈 - 找到属于你的圈子