class Server(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
...
class Schedule(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
...
class LineItem(models.Model):
schedule = models.ForeignKey(Schedule, on_delete=models.CASCADE)
server = models.ForeignKey(Server, blank=True, null=True)
...
У меня есть некоторая действительно противная логика в моем шаблоне, чтобы отобразить любые LineItems, относящиеся к данному объекту сервера в подробном сервере страницеДжанго, фильтр запрос установить многократный entry_set.all() отношения
{% for schedule in server.client.schedule_set.all %}
{% for lineitem in schedule.lineitem_set.all %}
{% if lineitem.server == server %}
{{ lineitem.id }}
{{ lineitem.description }}
{% endif %}
{% endfor %}
{% endfor %}
UPDATE: для разъяснения
Я могу получить соответствующую информацию изнутри зрения следующим:
def serverDetailView(request, pk):
# Fetches all the line items related to the current server
server = get_object_or_404(Server, pk=pk)
line_items = []
for schedule in server.client.schedule_set.all():
items = schedule.lineitem_set.all()
for item in items:
if item.server == server:
line_items.append(item)
context = {'server': server, 'line_items': line_items}
return render(request, 'reports/server_detail.html', context)
Затем в шаблоне:
{% for item in line_items %}
{{ item }}
{% endfor %}
Вопрос заключается в том, могу ли я отфильтровывать эти соответствующие LineItems с помощью одного запроса?
Это никогда не происходило со мной, чтобы сделать этот путь вокруг! Я работаю до завтра. Я на 99%, это будет то, что мне нужно. Благодаря! –