I have a page displaying data from a HubDB table. It needs to be grouped by category. The categories are stored in another HubDB table. I can get this working using multiple hubdb_table_rows functions and filtering like below:
hubdb_table_rows(table_id, '&category__contains=' ~ category)
Problem is as there are more than 10 categories I hit the table scans limit. I’d prefer to do one hubdb_table_rows and use selectattr but I can’t get this working with a foreign id column type. Any ideas?
rows|selectattr('category.name','contains','Category Name')
@bradhardinge ,
Let me introduce you to @alyssamwilie . She is about as gifted as they come particularly around HubDB.
@alyssamwilie what say you?
@bradhardinge
You could loop through the categories table, within that loop through your main table, and then use an if statement to find rows containing the currently looped category.
{% set rows = hubdb_table_rows(tableid) %}
{% set categories = hubdb_table_rows(tableid) %}
{# Loop through categories table #}
{% for category in categories %}
<h2>{{ category.name }}</h2>
{# Loop through main table #}
{% for row in rows %}
{# Check if row contains category #}
{% if category.name is within row.categories|map('name') %}
<p>{{ row.title }}</p>
{% endif %}
{% endfor %}
{% endfor %}