2016-08-25 1 views
2

Angenommen habe ich die folgenden Django Klassen:Django wie auf ManyToManyField zu filtern?

in myclassa.py:

class MyClassA(models.Model): 
    name = models.CharField(max_length=254) 

    def my_method(self): 
     # WHAT GOES HERE? 

in myclassb.py:

from myclassa import MyClassA 
class MyClassB(models.Model): 
    name = models.CharField(max_length=254) 
    a = models.ManyToManyField(MyClassA, related_name="MyClassB_MyClassA") 

Nehmen wir nun an Ich habe eine Instanz x von MyClassA. Was gebe ich in my_method(), so dass es alle Instanzen von MyClassB zurückgibt, die x in ihrem Feld a enthalten? Alternativ

def my_method(self): 
    return self.MyClassB_MyClassA.all() 

, können Sie auch definieren als:

Antwort

2

Sie können es als definieren

def my_method(self): 
    return MyClassB.objects.filter(a=self) 
+1

Dank. Der erste wird funktionieren. Die zweite Option wird nicht verwendet, da 'MyClassB' nicht in' myclassa.py' importiert wird. –

+1

Verwenden Sie, was Ihren Anforderungen entspricht. In der Tat, 1. ist der bevorzugte Weg, um es zu erreichen. –

Verwandte Themen