2011-01-28 29 views
13

ile ilgili çoktan çok sayıdaki nesneyi bir araya getirin İlişkileri açıklayan çoktan çoğa alanları olan birbiriyle bağlantılı Django modellerinin bir twisty labirentine sahibim.Django QuerySet

Bir QuerySet'ten ilişkili bir modelin benzersiz üyelerin listesini almanın en temiz yolu nedir?

Grup modeline işaret eden ManyToMany gruplu bir Item modelim varsa.

Ben 'kalemlerin' Kalemlerinin bir Sorgu Kümesi, varsa, bunu nasıl alabilirim:

groups = items[0].groups.all().values_list('name', flat=True) 

Ama bütün set için

? Hepsinde yineleme yapmam ve ayar yapmam gerekiyor mu(). Intersect()?

cevap

17

Bir çözüm 2 sorgu kullanmaktır.

Tüm Group s sorgulamak için, Item adresinin items numaranızda sorgulamak için ters ilişkileri kullanabilirsiniz.

groups = groups.objects.filter(item__in=items).distinct().values_list('name', flat=True) 
+0

Yeterince zarif. Teşekkürler. – samurailawngnome

+2

Ayrıca, 'flat = True' işlevinin' values_list' için bir parametre olarak kullanılmasını da yararlı bulabilir ve sonuç isimleri bir liste listesi yerine isimlerin listesi olarak döndürecektir. – gorus

+0

@gorus - güncellendi. Komik buluyorum, orjinal yazıdan düz bir şekilde çıkardım çünkü farklı bir şekilde kafam karıştı. –

İlgili konular