camnooten
camnooten

Reputation: 23

How do I sort my topics by category in Django?

Alright so I want to order my topics by the category in Django. What's the best way of doing this?

views.py:

from django.shortcuts import render
from .models import Category
from .models import Topic
# Create your views here.
def forums(request):
        categorys = Category.objects.all()
        topics = Topic.objects.all()
        return render(request, 'forums.html', {'categorys': categorys, 'topics': topics})

models.py:

from django.db import models

# Create your models here.

class Attachment(models.Model):
        file = models.FileField()
        def __str__(self):
                return self.file
class Category(models.Model):
        title = models.CharField(max_length=150)
        def __str__(self):
                return self.title
class Topic(models.Model):
        title = models.CharField(max_length=150)
        description = models.TextField()
        category = models.ForeignKey('Category', on_delete=models.CASCADE)
        def __str__(self):
                return self.title
class Post(models.Model):
        title = models.CharField(max_length=150)
        body = models.TextField()
        forum = models.ForeignKey('Topic', on_delete=models.CASCADE)
        def __str__(self):
                return self.title

Also, yes I know that categories is spelled wrong, I still need to add the Meta.

Upvotes: 1

Views: 998

Answers (1)

Astik Anand
Astik Anand

Reputation: 13047

You can get all the topics inside categories in following way:

{% for category in categorys %}
    <h1>{{category.title}}</h1>
    <ul>
    {% for topic in category.topic_set.all %}
         <li>{{topic.title}}</li>
    {% endfor %}
    </ul>
{% endfor %} 

Upvotes: 1

Related Questions