Ich habe die folgenden Django viele-zu-viele durch Modell-Setup, aber ich kann nicht herausfinden, wie man durch jede Container iterieren, die Liste der Checkboxen erhalten und ob diese Checkboxen wahr oder falsch sind (CheckboxStatus.status).Wie richtig Schablonen-Tags in dieser bestimmten Viele-zu-Viele-Beziehung in Django verwenden?
Die Modelle sind:
class Container(models.Model):
name = models.CharField(max_length=200)
checkboxes = models.ManyToManyField('Checkbox',
through='CheckboxStatus',
related_name='containers')
class Checkbox(models.Model):
name = models.CharField(max_length=60)
description = models.CharField(max_length=200)
order = models.PositiveSmallIntegerField(default=0)
class CheckboxStatus(models.Model):
container = models.ForeignKey(Container,
related_name='checkboxstatus')
checkbox = models.ForeignKey(Checkbox, related_name='checkboxstatus')
status = models.NullBooleanField()
Ich habe folgendes bekam, wo Object_List = die CheckboxStatus Modell ...
{% for object in object_list. %}
{{ object.container }}
{{ object.checkbox }}
{{ object.status }}
{% endfor %}
... aber dies führt zu allen Kontrollkästchen , und ich muss einige Operationen auf jedem Container durchführen. In pseudocode hätte ich gerne:
Aber vielleicht ist die Beziehung einfach nur falsch. Kann mich jemand in die richtige Richtung drängen?
Welche Ressourcen würden Sie auch empfehlen, um über diese Art von Datenbankstrukturen zu erfahren? Ich kann das Konzept dieser komplexeren Datenbankbeziehungen noch nicht erfassen. –
Soll Ihr Checkbox-Modell ein Kontrollkästchen in einem Formular sein? Wie eine Liste von Optionen für einen Container, die über ein Kontrollkästchen ausgewählt werden können? –
Hallo @RobVezina!Ja, was ich gerne tun würde: mehrere "Seecontainer" haben, ein << container >> Modell, geben Sie jedem eine Liste von Checkboxen (Checkbox) wie im << checkbox >> Modell definiert, und haben Sie eine << status >> für diese << Kontrollkästchen für jedes << container >>. Ich habe wahrscheinlich ein falsches Datenbankbeziehungsmodell, denke ich? Vielen Dank für Ihre Antwort! –