2016-04-08 5 views
0

Wie erstellt man eine Abfrage, um eine Ausgabe aller Aufgaben in einem Projekt mit einem bestimmten Autor zu erhalten? In meiner Vorlage möchte ich über alle Projekte iterieren und alle Aufgaben unterhalb des übergeordneten Projekts anzeigen.Erstellen Sie eine 1toM-Abfrage, die nach Fremdschlüssel sortiert

{% for p in projects %} 
add project html 
    {% for t in projects.tasks %} 
    add task html 
    {% endfor %} 
{% endfor %} 

Modelle:

class Project(models.Model): 
    projectname_text = models.CharField('Projectname', unique=True, max_length=200) 

class Task(models.Model): 
    project = models.ForeignKey(Project, on_delete=models.CASCADE,) 
    task_text = models.CharField(max_length=200) 
    author = models.ForeignKey(User, null=True, blank=True, related_name='author') 

Ich hoffe, dass jemand in der Lage Hilfe mich :)

Antwort

1

Ich schlage vor, Sie project Feld auf Ihrem Task Modell wie folgt ändern:

class Task(models.Model): 
    project = models.ForeignKey(Project, on_delete=models.CASCADE, 
           related_name='tasks') 
    # ... 

Dies wird Sie a Erledigen Sie alle Aufgaben für ein bestimmtes Projekt durch project.tasks.all().

Sie müssen auch Ihre Vorlage leicht ändern, weil Sie gerade projects beziehen sind, wo Sie p beziehen sollten, und Sie müssen eine Schleife über p.tasks.all nicht nur p.tasks.

{% for p in projects %} 
add project html 
    {% for t in p.tasks.all %} 
    add task html 
    {% endfor %} 
{% endfor %} 

Sie müssen sicherstellen, dass projects im Kontext zu Ihrer Vorlage von Ihrer Sicht übergeben wird.

+0

Danke, die "p.tasks.all" in der Vorlage hat mich da :) – qwertasyx