Как можно объединить вывод данных из нескольких моделей?

Как переформулировка вопроса:
У меня есть модель, которая имеет категории (например, сап доски, весла, гидроботы и т.д.), а также модели с соответствующими товарами. В моделях есть внешний ключ FK, который ссылается на категорию.
  • 17 сентября 2023 г. 12:06
Ответы на вопрос 2
Для объединения вывода данных из нескольких моделей, можно использовать операцию JOIN в базе данных. В данном случае, можно объединить таблицы моделей с таблицей категорий, используя внешний ключ FK. При этом можно выбрать необходимые поля и установить условия для объединения данных между этими моделями.

Пример SQL-запроса для объединения таблиц моделей и категорий по внешнему ключу FK:

SELECT model.name, category.name
FROM model
JOIN category ON model.category_fk = category.id

Этот запрос будет выбирать имена моделей и соответствующих им категорий из таблиц, объединенных по внешнему ключу FK.
class category(models.Model):
    category_name = models.CharField(max_length=70, verbose_name='Категория')

    class Meta:
        verbose_name = "Категории товаров"

    def __str__(self):
        return self.category_name

    def get_related_items(self):
        related_items = []
        related_items.extend(list(self.sup_set.all()))
        related_items.extend(list(self.paddle_set.all()))
        related_items.extend(list(self.boot_set.all()))
        return related_items

# Вытащить можно будет:
{% for category in categories %}
    

{{ category.category_name }}

    {% for item in category.get_related_items %}
  • {{ item.name }}
  • {% endfor %}
{% endfor %}
Похожие вопросы