Problem bei if - elif Abfrage

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Newbie2009
User
Beiträge: 12
Registriert: Mittwoch 15. Juli 2009, 11:55

Hallo,

ich hab ein Problem bei einer if - elif Abfrage.

Und zwar folgender Ablauf:

Code: Alles auswählen

             if self.variant() and not self.images and not self.parent_images:
                object = self.parent
            elif self.variant() and self.images and not self.parent_images:
                object = self
            elif self.variant() and not self.images and self.parent_images:
                object = self.parent
            elif self.variant() and self.images and self.parent_images:
                object = self + self.parent
            else:
                object = self
Mein Problem liegt in der letzten elif-Abfrage. An dieser Stelle sollen die Bilder vom Basisprodukt und der Variante angezeigt werden. Wie muss ich das schreiben?
Zuletzt geändert von Newbie2009 am Montag 9. November 2009, 11:16, insgesamt 1-mal geändert.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

so richtig schlau werde ich aus deinem Code nicht.

Ach ja
Das Leben ist wie ein Tennisball.
Newbie2009
User
Beiträge: 12
Registriert: Mittwoch 15. Juli 2009, 11:55

Ich habe 2 Checkboxen.

1. If: kein Haken gesetzt --> zeige nur die Bilder vom Basisprodukt
2. If: ein Haken gesetzt bei der Variante --> zeige nur die Bilder der Variante
3. If: ein Haken bei Basisprodukt gesetzt --> zeige nur die Bilder des Basisproduktes
4. If: Beide Haken gesetzt --> zeige die Bilde der Variante und des Basisproduktes.

Vielleicht erklärt es sich jetzt besser was ich möchte.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Newbie2009 hat geschrieben:Ich habe 2 Checkboxen.
Wie greifst Du auf den Status dieser beiden Boxen zu?
1. If: kein Haken gesetzt --> zeige nur die Bilder vom Basisprodukt
2. If: ein Haken gesetzt bei der Variante --> zeige nur die Bilder der Variante
3. If: ein Haken bei Basisprodukt gesetzt --> zeige nur die Bilder des Basisproduktes
4. If: Beide Haken gesetzt --> zeige die Bilde der Variante und des Basisproduktes.
Wie wird das "zeigen" gemanaget? Was muss dafür wie gesetzt werden?
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Newbie2009 hat geschrieben:Ich habe 2 Checkboxen.

1. If: kein Haken gesetzt --> zeige nur die Bilder vom Basisprodukt
2. If: ein Haken gesetzt bei der Variante --> zeige nur die Bilder der Variante
3. If: ein Haken bei Basisprodukt gesetzt --> zeige nur die Bilder des Basisproduktes
4. If: Beide Haken gesetzt --> zeige die Bilde der Variante und des Basisproduktes.

Vielleicht erklärt es sich jetzt besser was ich möchte.
Die Idee ist klar, aber der Code hat nicht wirklich etwas mit Django zu tun.

Ohne Kenntnis deiner Umgebung kann man hier keine Vorschläge machen. Du reichst ein Objekt zurück das dann wohl durch eine andere Routine verarbeitet wird. Ich habe keine Ahnung wie dieses Objekt modelliert ist und welche Annahmen die aufrufende Routine darüber trifft.
Newbie2009
User
Beiträge: 12
Registriert: Mittwoch 15. Juli 2009, 11:55

Der Status wird in einer Db gespeichert mit "True" und "False".

Nur mal für das 4. If. Es wird geschaut ob das Produkt eine Variante (z.B. Farbe rot) ist mit self.variant(). Wenn self.images = True und self.parent_images = True, dann soll object alle Bilder zurückliefern.

images = object.images.all()
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Newbie2009 hat geschrieben: Nur mal für das 4. If. Es wird geschaut ob das Produkt eine Variante (z.B. Farbe rot) ist mit self.variant(). Wenn self.images = True und self.parent_images = True, dann soll object alle Bilder zurückliefern.

images = object.images.all()
Gesetzt den Fall, dass object.images.all() eine Liste zurückliefert ist das Verketten einfach.

Code: Alles auswählen

a = [1, 3, 5, 7, 9]
b = [2, 3, 4, 6, 7]
c = a + b
Sollte es sich nicht um eine Liste handeln, dann wäre es wirklich sehr praktisch, wenn du uns mitteilen würdest um was für eine Datenstruktur es sich hier handelt.
BlackJack

@Newbie2009: Du solltest den Namen `object` nicht neu binden. Man sieht ja am Syntaxhighlighting, dass der etwas besonderes ist. Wenn da ein Ergebnis einer Funktion oder Methode dran gebunden wird, wäre `result` zum Beispiel ein netter Name.

Als nächstes ist das Ergebnis von `self.variant()` Bestandteil von jeder Bedingung, also sollte man das herausziehen.

Ansonsten ist mir die Frage nicht so ganz klar. Du hast zwei Checkboxen, aber drei Wahrheitswerte!? Welches ist welcher und wo kommt der Dritte her!? Es sieht IMHO zu kompliziert aus.
Antworten