How to display multiple items under 1 category name?

Question:

views.py :

def gerechten(request):
    template = loader.get_template('café/gerechten.html')
    mydata = gerecht_info.objects.all()
    mydata2 = gerechten_Categorie.objects.all()

    context = {
        'mygerecht': mydata,
        'mycategories': mydata2
    }   
    return HttpResponse(template.render(context, request))

models.py :

class gerechten_Categorie(models.Model):
    categorie = models.CharField(max_length=200)
    def __str__(self):
        return self.categorie

class gerecht_info(models.Model):
    categorie = models.ForeignKey(gerechten_Categorie, on_delete=models.CASCADE)
    gerecht_name = models.CharField(max_length=200)
    gerecht_description = models.CharField(max_length=500, blank=True, null=True)
    gerecht_price = models.CharField(max_length=50)
    def __str__(self):
        return self.gerecht_name
    def drinkdesc(self):
        return self.gerecht_description
    def drinkprice(self):
        return self.gerecht_price

gerechten.html :

{% if mygerecht %}
{% for cat in mygerecht %}
<div class="flex">
    <div class="menu-head center">
        <h2>{{cat.categorie}}</h2>
    </div>
    <div class="menu-item">
        <ul class="price">
            <li>{{cat.gerecht_name}}</li>
            <li>€{{cat.gerecht_price}}</li>
        </ul>
        {% if cat.gerecht_description %}
        <p>{{cat.gerecht_description}}</p>
        {% else %}
        <p></p>
        {% endif %}
    </div>
</div>
{% endfor %}
{% else %}
<div class="menu-head center">
<h2>no items avaible</h2>
</div>
{% endif %}

Looks like this but I want all info from ‘Hapjes’ into 1 ‘Hapjes’ category, not separated.

Asked By: sub joel

||

Answers:

I think what you are trying to achieve can be done with regroup template tag.

{% regroup mygerecht by categorie as article_categories %}
{% for categorie in article_categories %}
<div class="flex">
    <div class="menu-head center">
        <h2>{{categorie.grouper}}</h2>
    </div>
    {% for article in categorie.list %}
    <div class="menu-item">
        <ul class="price">
            <li>{{article.gerecht_name}}</li>
            <li>€{{article.gerecht_price}}</li>
        </ul>
        <p>{% if article.gerecht_description %}{{article.gerecht_description}}{% endif %}</p>
    </div>
    {% endfor %}
</div>
{% endfor %}

Answered By: WitoldW
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.