2016-05-06 21 views
0

Ich erstelle eine einfache Anwendung mit Django, wo ich Informationen über eine Reihe von Qualitätskontrolltests aufnehmen und verfolgen kann, die regelmäßig an Strahlentherapie- und Radiologiegeräten durchgeführt werden. Es zeigt eine Liste aller verfügbaren Geräte an, die ich dann auswählen kann, um entweder eine Reihe von Tests durchzuführen oder andere zuvor durchgeführte Aktivitäten zu überprüfen. Für jetzt scheint alles zu funktionieren. Ich kann neue Geräte, neue Tests erstellen und die Tests für diese Geräte filtern. Aber jetzt habe ich ein Problem, das ich nicht lösen kann. Hier ist ein Beispiel meines Codes mit den Modellen, die ich bin zu kämpfen:Django-Formular mit ManyToMany-Feld

/models.py 
class Test(models.Model): 
    testgroup = models.ForeignKey(TestGroup) 
    equipament = models.ManyToManyField(Equipament, blank=True) 
    number = models.CharField(max_length=10) 
    name = models.CharField(max_length=120) 
    description = models.CharField(max_length=300, null=True, blank=True) 
    frequency = models.ForeignKey(Frequency, null=True, blank=True) 
    tolerance = models.CharField(max_length=30, null=True, blank=True) 

    def __str__(self): 
     return '%s%s%s %s' % (self.testgroup.modality, self.testgroup.abbreviation, self.number, self.name) 

    pass 


class Activity(models.Model): 
    CONFORMANCE_CHOICES = (
     ('Yes', 'Yes'), 
     ('No', 'No'), 
    ) 
    equipament = models.ForeignKey(Equipament, on_delete=models.CASCADE) 
    type = models.ForeignKey(Type, null=True, blank=True) 
    date = models.DateField(null=True, blank=True) 
    summary = models.CharField(max_length=30, null=True, blank=True) 
    user = models.CharField(max_length=50, null=True, blank=True) 
    test = models.ManyToManyField(Teste, blank=True) 
    conformance = models.CharField(max_length=10, choices=CONFORMANCE_CHOICES, null=True, blank=True) 

    def __str__(self): 
     return '%s %s' % (self.date, self.equipament) 

     pass 

Was muss ich tun, ist in der Lage sein, um ein Ergebnis zu speichern, eine der Konformität Entscheidungen zu jedem Test. Ich kann in der Aktivitätsansicht eine Liste der Tests anzeigen, die ich durchführen möchte, aber wie kann ich dieses Konformitätsfeld für jeden Test speichern? Meine beste Vorgehensweise bestand darin, das Konformitätsfeld zu einem ManyToManyField zu ändern und über das Formular die Beziehungen zwischen Tests und Konformität zu erstellen, aber ich erhalte für jeden Test alle Konformitätsentscheidungen. Wie kann ich nur eine Konformitätsauswahl (die ausgewählte) für einen Test definieren? Bitte helfen Sie ...

Antwort

0

Ich war in der Lage, dies auszuarbeiten. Ich poste meine Lösung. Vielleicht hatte oder hat jemand das gleiche Problem. Um das zu erreichen, was ich wollte, habe ich inlinefomset_factory ein Zwischenmodell namens Results mit einem ForeignKey to Activity erstellt. Alles funktioniert jetzt.