2 Stimmen

Wie kann ich eine Methode innerhalb eines Django-Modells schreiben, um verwandte Objekte abzurufen?

Ich habe zwei Modelle. Nennen wir sie Objekt A und Objekt B. Ihr Design sieht etwa so aus:

class Foo(models.Model):
     name = models.CharField()

class Bar(models.Model):
     title = models.CharField()
     Foo= models.ForeignKey('myapp.Foo')

Nehmen wir nun an, ich möchte eine Methode innerhalb von Foo erstellen, die alle Bar-Objekte zurückgibt, die auf diese Instanz von Foo verweisen. Wie kann ich das tun?

class Foo(models.Model):
     name = models.CharField()
     def returnBars(self):
         ????

10voto

Jonny Buchanan Punkte 60128

Sie erhalten dies kostenlos:

http://docs.djangoproject.com/en/dev/topics/db/queries/#backwards-related-objects

Standardmäßig können Sie auf einen Manager zugreifen, der Ihnen Zugang zu verwandten Objekten über eine RELATEDCLASSNAME_set Attribut:

some_foo.bar_set.all()

Oder Sie können die related_name Argument zu ForeignKey um das Attribut anzugeben, das die umgekehrte Beziehung Manager enthalten soll:

class Foo(models.Model):
     name = models.CharField()

class Bar(models.Model):
     title = models.CharField()
     foo = models.ForeignKey(Foo, related_name='bars')

...

some_foo.bars.all()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X