Erste, hier sind meine Modelle. Jede Saite hat von 1 bis 3 Darsteller, jeder Darsteller auf mehrere Saiten verbunden:Django Query Set gibt Attribut_Fehler, wenn Sie versuchen, ein Set mit mehreren Fremdschlüsseln
class Performer(models.Model) :
name = models.CharField(max_length=60, default="None")
description = models.TextField(null=True, default=None)
class String(models.Model) :
index = models.IntegerField(null=True, default=None)
step = models.IntegerField(null=True, default=None)
process = models.CharField(max_length=100,null=True, default=None)
description = models.TextField(null=True, default=None)
performer = models.ForeignKey(Performer, related_name='performer', on_delete=models.CASCADE, null=True, default=None)
performer2 = models.ForeignKey(Performer, related_name='performer2', on_delete=models.CASCADE, null=True, default=None)
performer3 = models.ForeignKey(Performer, related_name='performer3', on_delete=models.CASCADE, null=True, default=None)
Ich brauche alle Strings machen auf Interpreten zusammen. Allerdings, wenn ich versuche string_set
zu verwenden, um alle Strings zu erhalten, wenn eine des Performer Fremdschlüssels zu dieser Zeichenfolge zeigen, wie so:
p = Performer.objects.get(name="smth")# so p is a performer object
s = p.string_set.all()
ich dieses Problem bekommen:
AttributeError: 'Performer' object has no attribute 'string_set'
Auch habe ich tryed Filter mit verwandtem Namen zu verwenden, aber das gibt mir den gleichen Fehler. Gibt es eine Möglichkeit, ein _set basierend auf einem beliebigen Fremdschlüsselfeld zu erhalten, das alle auf denselben Typ verweist?
Danke, es i 'll Versuch zuerst .. –
Aber ich kann Führen Sie "s.performers.all()" aus, wobei s ein einzelnes String-Objekt mit diesen Modellen ist? –
Ja, Sie können. Aber bedenken Sie, dass es die Viele-zu-Viele-Beziehung so 's.performers.all()' auch ein Abfrage-Set zurückgeben würde, kein einzelnes Objekt – canufeel