2013-02-11 12 views
17

Mam model MyModel2 z ManyToManyField związany z innym modelem MyModel1.Jak wykonać zapytanie bezpośrednio do tabeli utworzonej przez Django dla relacji ManyToMany?

Jak mogę uzyskać pary mymodel1.id, mymodel2.id, jak przedstawiono w tabeli Django dla tej relacji? Czy muszę wykonać surowe zapytanie SQL w tej tabeli, czy jest to możliwe za pośrednictwem menedżerów obiektów w tych modelach?

class MyModel1(models.Model): 
    name = models.CharField(max_length=50) 


class MyModel2(models.Model): 
    name = models.CharField(max_length=50) 
    mymodel1 = models.ManyToManyField(MyModel1) 

Odpowiedz

35

To wiele do wielu instancji pola:

MyModel2.mymodel1 

To pośrednik modelu tabela:

MyModel2.mymodel1.through 

To pośrednik menedżer model:

MyModel2.mymodel1.through.objects 

To zwraca zapytanie ustawione dla wszystkich modeli pośrednictwa:

MyModel2.mymodel1.through.objects.all() 

This part od django docs mówić o through. Możesz samodzielnie wykonać model through, w przeciwnym razie zostanie on automatycznie wygenerowany.

+0

ten usuwa wszystkie moje wątpliwości ,,, :) – Spiderman

+0

obiekt „ManyToManyDescriptor” nie ma atrybutu „chociaż” –

+0

Masz literówkę;) to dzięki! – jpic

Powiązane problemy