pythondjangodjango-viewsdjango-formwizard

django object has no attribute 'count'


I am learning django / python and I am stuck on an issue.

I have a view: create_document.py in which I want to count the number of name details from a models class: NameDetails.

I cannot get the correct syntax!

Here is my models.py code:

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)
    ....

Here is my create_document.py code in which I have a django wizard. I want to make sure the user has more than 1 name before they can create a document:

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)

When I use the line to determine the count of NameDetails of the user: name_details_count = NameDetails(user=self.request.user).count(), I get the following error:

NameDetails' object has no attribute 'count'

I have tried many permutations, but I am stuck.


Solution

  • It should be like that in your get_context_data function:

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