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.