Error received:  

path('category/', views.CategoryListview.as_view(), name='categories'),

AttributeError: module 'catalog.views' has no attribute 'CategoryListview'

Thanks for your help I greatly appreciate it. 

On Monday, August 27, 2018 at 12:16:09 PM UTC-4, Matthew Pava wrote:
>
> Oh, yes.  I do it all the time myself.
>
>  
>
> You need to change
>
>  
>
> category.model_set
>
>  
>
> to
>
>  
>
> category.model_set.all
>
>  
>
> model_set is the manager.  You need to treat it like any other manager.
>
>  
>
> *From:* [email protected] <javascript:> [mailto:
> [email protected] <javascript:>] *On Behalf Of *Jay
> *Sent:* Monday, August 27, 2018 11:05 AM
> *To:* Django users
> *Subject:* Re: Printing model fields organized by category
>
>  
>
> Hmm, I'm getting an error:
>
>  
>
> [image: Screen Shot 2018-08-27 at 11.58.32 AM.png]
>
>  
>
>  
>
>  
>
>  
>
>  
>
>  
>
>  
>
> I've changed my urls.py to this:
>
>  
>
> from django.urls import path
>
> from . import views
>
>  
>
> urlpatterns = [
>
>     path('', views.index, name='index'),
>
>     path('books/', views.BookListView.as_view(), name='books'),
>
>     path('book/<int:pk>', views.BookDetailView.as_view(), 
> name='book-detail'),
>
>     path('category/', views.CategoryListView.as_view(), name='categories'),
>
>
> On Monday, August 27, 2018 at 11:33:14 AM UTC-4, Matthew Pava wrote:
>
> Okay, your URL should point to your CategoryListView.  That should have 
> category_list in its context.  And the template should in the category_list 
> template.
>
>  
>
> *From:* [email protected] [mailto:[email protected]] *On 
> Behalf Of *Jay
> *Sent:* Monday, August 27, 2018 10:28 AM
> *To:* Django users
> *Subject:* Re: Printing model fields organized by category
>
>  
>
> Thanks Matthew, here is my views.py file:
>
>  
>
>  
>
> from django.shortcuts import render #generates HTML fiels using a template 
> and data
>
> #from django.http import HttpResponse
>
> from .models import Book, Author, BookInstance, Genre, Model, 
> ModelInstance, Category, Ownership, Manufacturer, Location #imports model 
> classes to access data in views
>
> from django.views import generic
>
>  
>
> # Create your views here.
>
>  
>
> #def index(request):
>
> #    return HttpResponse("Hey")
>
>  
>
> def index(request):
>
>     """View function for home page of site."""
>
>  
>
>     #Generate counts of some of the main objects
>
>     num_books = Book.objects.all().count()
>
>     num_instances = BookInstance.objects.all().count()
>
>  
>
>     #Available books (status - 'a')
>
>     num_instances_available = 
> BookInstance.objects.filter(status__exact='a').count()
>
>  
>
>     #The 'all()' is implied by default.
>
>     num_authors = Author.objects.count()
>
>  
>
>     #Num visits to this view, as counted in the session variable
>
>     num_visits = request.session.get('num_visits', 0)
>
>     request.session['num_visits'] = num_visits + 1
>
>  
>
>  
>
>     context = {
>
>         'num_books': num_books,
>
>         'num_instances': num_instances,
>
>         'num_instances_available': num_instances_available,
>
>         'num_authors': num_authors,
>
>         'num_visits': num_visits,
>
>     }
>
>  
>
>     #Render the HTML template index.html with the data in the context 
> variable
>
>     return render(request, 'index.html', context=context)
>
>  
>
> class BookListView(generic.ListView):
>
>     model = Book
>
>  
>
> class BookDetailView(generic.DetailView):
>
>     model = Book
>
>  
>
> class ModelListView(generic.ListView):
>
>     model = Model
>
>  
>
> class ModelDetailView(generic.DetailView):
>
>     model = Model
>
>  
>
> class CategoryListView(generic.ListView):
>
>     model = Category
>
>  
>
> class CategoryDetailView(generic.DetailView):
>
>     model = Category
>
>  
>
> from django.contrib.auth.mixins import LoginRequiredMixin
>
>  
>
> class LoanedBooksByUserListView(LoginRequiredMixin,generic.ListView):
>
>     """Generic class-based view listing books on loan to current user."""
>
>     model = BookInstance
>
>     template_name ='catalog/bookinstance_list_borrowed_user.html'
>
>     paginate_by = 10
>
>  
>
>     def get_queryset(self):
>
>         return 
> BookInstance.objects.filter(borrower=self.request.user).filter(status__exact='o').order_by('due_back')
>
>  
>
>
> On Monday, August 27, 2018 at 11:00:57 AM UTC-4, Matthew Pava wrote:
>
> We need to see your view code.  I’m assuming now that you don’t have 
> category_list in your context variable that you submitted to the template.
>
>  
>
> *From:* [email protected] [mailto:[email protected]] *On 
> Behalf Of *Jay
> *Sent:* Monday, August 27, 2018 9:20 AM
> *To:* Django users
> *Subject:* Re: Printing model fields organized by category
>
>  
>
> Thanks for the suggestions, I will change the name from Model after I can 
> get this working. 
>
>  
>
> So, I've changed the code using your help to:
>
>  
>
>   {% if category_list %}
>
>     {% for category in category_list %}
>
>         <li><strong>{{ category }}</strong></li>
>
>           <ul>
>
>             {% for model in category.model_set %}
>
>               <li>
>
>               <a href="{{ model.get_absolute_url }}"> {{ 
> model.model_number }}..........{{ model.description }} </a>
>
>               </li>
>
>             {% endfor %}
>
>           </ul>
>
>     {% endfor %}
>
>   {% else %}
>
>         <p>There is no equipment in the database</p>
>
>   {% endif %}
>
>  
>
> {% endblock %}
>
>  
>
> However, this just prints "There is no equipment in the database". Am I 
> missing something? I will try to experiment a little more. 
>
>
> On Monday, August 27, 2018 at 9:52:56 AM UTC-4, Matthew Pava wrote:
>
> Hi Jay,
>
> Firstly, I would avoid calling a model “Model.”  Maybe “Product” would be 
> better?  It’s only because of Django’s models.Model class.  That will 
> likely cause confusion in the future for you.
>
>  
>
> You’ll want to work with the Category model primarily and use a reverse 
> lookup to get to the corresponding “Model” instead of working with a 
> model_list.  The reverse lookup of category to model is model_set by 
> default.  You can change the name if you want.
>
>  
>
> {% for category in category_list %}
>
>       <strong>{{ category }}</strong>
>
>       <ul>
>
>       {% for model in category.model_set %}
>
>             <li><a href="{{ model.get_absolute_url }}">{{ model }}</a></li>
>
>       {% endfor %}
>
>       </ul>
>
> {% empty %}
>
>       <p>There is no equipment in the database with a category.</p>
>
> {% endfor %}
>
>  
>
>  
>
> Check out 
> https://docs.djangoproject.com/en/2.1/topics/db/examples/many_to_one/
>
>  
>
>  
>
> *From:* [email protected] [mailto:[email protected]] *On 
> Behalf Of *Jay
> *Sent:* Monday, August 27, 2018 8:02 AM
> *To:* Django users
> *Subject:* Printing model fields organized by category
>
>  
>
> I have a Class called "Model" that has a field called "model_numbers". I 
> have another class called "Category" that has a field called "category". In 
> the Model Class, I have a field called category that is a Foreign Key to 
> the field category in the Class category.
>
>  
>
> [image: Screen Shot 2018-08-27 at 8.58.54 AM.png]
>
>  
>
> Also, here is the html that prints the modeul_number and category fields:
>
>  
>
> [image: Screen Shot 2018-08-27 at 9.01.10 AM.png]
>
>  
>
>  
>
> What the code is printing:
>
>  
>
> CATEGORY 1:
>
>  - Field 1
>
>  - Field 2
>
>  - Field 3 
>
>  
>
> CATEGORY 2:
>
>  - Field 1
>
>  - Field 2
>
>  - Field 3
>
>  
>
> What I want it to print is:
>
>  
>
> CATEGORY 1:
>
>  - Field 1
>
>  - Field 2
>
>  
>
> CATEGORY 2:
>
> - Field 3
>
>  
>
> In this way it prints out all the model numbers under their respective 
> category name (instead of all model numbers under every category, which is 
> not correct as each model number only has one category). 
>
>  
>
> I posted about this on stackoverflow, and received a response but I am 
> still confused. 
> <https://stackoverflow.com/questions/51882942/how-can-i-organize-a-list-of-fields-based-on-another-field>
>
>  
>
> Thank you!
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/098cc4aa-374a-4e9a-9da1-ee49bab591aa%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/django-users/098cc4aa-374a-4e9a-9da1-ee49bab591aa%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/62492e1a-1aeb-48ef-b1c1-47d3bfc77124%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/django-users/62492e1a-1aeb-48ef-b1c1-47d3bfc77124%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/4683cba0-9332-46ac-b318-bbd25b4a32f5%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/django-users/4683cba0-9332-46ac-b318-bbd25b4a32f5%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] 
> <javascript:>.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/1d1057c6-3be6-4205-8530-59946090547d%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/django-users/1d1057c6-3be6-4205-8530-59946090547d%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/ca685ab8-933b-4d58-9e18-6418e1165cab%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to