2010-01-22 8 views
2

Supposons que j'ai un tel modèle:django, une bonne façon d'interroger un modèle distinct

class Foo(models.Model): 
    name = models.CharField("ad",max_length=25) 
    type = models.ForeignKey(Type) 

donc à la base de données que j'ai Foo objets avec un même champ de nom, mais différents types à savoir:

name type 
A  1 
A  2 
B  1 
C  2 
A  3 
B  3 

Je vais utiliser cette information pour générer un formulaire de sélection html, affichant tous les noms possibles (distincts) afin qu'à la fin, mon formulaire de sélection montrera tel:

<select> 
    <option value="A">A</option> 
    <option value="B">B</option> 
    <option value="C">C</option> 
</select> 

Comment obtenir une liste de valeurs distinctes pour name?

+0

Suis-je le seul qui ne voit pas question ici :)? –

+0

@Tomasz - il y en a un si vous le cherchez, je l'ai édité pour le rendre plus apparent. –

Répondre

6

En réponse à votre question après Till, un moyen plus facile est:

Foo.objects.values_list('name', flat=True).distinct().order_by('name') 
2
Foo.objects.values('name').distinct().order_by('name') 
+0

cela semble fonctionner grâce, mais la sortie est telle: { 'name':} {GPI 'name': u'B} { 'name': u'C} comment puis-je résoudre ce problème problème? – Hellnar

+0

pour l'enregistrement Je l'ai tel: noms = [i ["nom"] pour moi dans Foo.objects.values ​​('nom'). Distinct(). Order_by ('nom')] – Hellnar

+0

Voir ma réponse pour un plus facile façon de le faire. –