Я ищу несколько советов о том, как выполнить запрос с несколькими объектами, а затем использовать их вместе в подробном представлении для связанного с ним объекта. Вот то, что я работаю с прямо сейчас:Запрос нескольких моделей Django
-- app/models.py --
class Material(models.Model):
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
title = models.CharField(max_length=50)
slug = models.SlugField()
description = models.TextField()
def __str__(self):
return self.title
class Category(Material):
parent = models.ForeignKey('self', related_name='children')
class Content(Material):
author = models.ForeignKey(User)
category = models.ForeignKey(Category)
class SomeObject(Content):
# Model specific properties and methods
class SomeOtherObject(Content):
# Model specific properties and methods
То, что я пытаюсь сделать, чтобы отобразить как SomeObject и SomeOtherObject вместе в представлении Категория подробно. Каждая из этих моделей будет иметь различные атрибуты, которые делают их уникальными друг для друга. Это ситуация, когда полезны общие внешние ключи ?
-- app/templates/category_detail.html --
{% block content %}
<header class="category-header">
<h1 class="category-title">{{ category.title }}</h1>
</header><!-- .category-header -->
<section class="category-items">
{% for item in category.manager_that_queries_both.all %}
# Display each item differently depending on the type
{% empty %}
"Oops, we couldn't find anything for this category!"
{% endfor %}
</section><!-- .category-items -->
{% endblock %}
Я хотел бы остаться в стороне от писак, которые собираются быть трудно поддерживать в течение всей жизни этого продукта, если это возможно. Еще раз спасибо за помощь ребята =)
Вау, благодарю вас за своевременный ответ. Одна вещь, о которой я немного не уверен, будет заключаться в том, как бы вы тогда динамически отображали эти результаты в шаблоне в зависимости от выбранного типа модели. Надеюсь, это имеет смысл! –
Я добавил ссылку на фильтр, который позволяет работать с именем класса (без добавления методов к вашим моделям) –