2017-12-13 2 views
0

Ich habe ein drei einfachen Modelle:Wie filtert man Werte bei der Editierung von Fremdschlüsselfeldern?

class Task(models.Model): 
    code = models.CharField(max_length=200, unique=True) 
    tags = models.ManyToManyField(Tag, blank=True) 

class Session(models.Model): 
    tasks = models.ManyToManyField(Task, through='TaskInSession') 

und

class TaskInSession(models.Model): 
    session = models.ForeignKey(Session, on_delete=models.CASCADE) 
    task = models.ForeignKey(Task, on_delete=models.CASCADE) 
    count = models.IntegerField() 

Für Sitzung Bearbeitung Ich habe:

class SessionAdmin(admin.ModelAdmin): 
    inlines = [TaskInSessionInline,] 
    exclude = ('tasks',) 

Ist es möglich, Aufgaben filterting nach Tag Möglichkeit, für einfach hinzufügen Aufgabenauswahl beim Bearbeiten von Sitzungen?

Antwort

0

sollten Sie in models.py Ihre Tag-Klasse definiert haben. Vielleicht etwas wie das:

class Tag(models.Model): 
    Name = models.CharField(max_length=200, unique=True) 

Dann in Ihrem views.py erhalten Sie das gewünschte Tag. Zum Beispiel:

desired_tag = Tag.objects.get(Name='some_name') # you could as well get the desired tagby the pk attribute. 

Schließlich erhalten Sie alle Aufgaben mit diesem Tag verbunden. Beispiel:

filtered_tasks = Tasks.objects.filter(tags=desired_tag) 

Die Abfrage, die Sie suchen, wäre filtered_tasks.

+1

Vielen Dank. Aber wie kann ich Benutzerfilteraufgaben während der Sitzungsbearbeitung per Tag zulassen? Um die Anzahl der Artikel selbst zu reduzieren. – kostbash

Verwandte Themen