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)
...
Ich habe einige wirklich böse Logik in meiner Vorlage keine Lineitems anzuzeigen, dieDjango, Filter-Abfrage über mehrere entry_set.all() gesetzt Beziehungen
{% 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 %}
in einem Server-Detailseite zu einem bestimmten Server-Objekt beziehen
UPDATE: zur Klarstellung
ich bin in der Lage, die relevanten Informationen von innen nach Ansicht der folgenden zu erhalten:
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)
Dann in der Vorlage:
{% for item in line_items %}
{{ item }}
{% endfor %}
Die Frage ist, kann ich diese relevant Lineitem mit einer einzigen Abfrage filtere nach unten?
Es ist nie wirklich fiel mir ein, zu tun auf diese Weise rund um die
ForeignKey
Beziehungen folgen! Ich bin arbeitsfrei, bis morgen bin ich 99%. Das werde ich sein. Vielen Dank! –