2012-11-07 3 views
0

je le modèle suivant:Geting éléments distincts dans une colonne de table dans Django

class Part (models.Model): 
adder=models.ForeignKey(User, related_name="added_models", verbose_name=_('adder'), editable=False) 

Je suis en train de sélectionner tous les adder distincts s ​​d'un objet Part. Pour ce faire, j'essayé:

Part.objects.filter('adder', flat=True).distinct()

Mais il ne me donne pas des valeurs distinctes et répète les valeurs adder.

Un aperçu de ce que je fais mal?

+2

Sur une note de côté, 'adder' est une sorte de confusion prénom. J'utilise habituellement 'created_by' ou' added_by' pour ces types de champs. Pensez-y en langage clair: "The Part a été ajouté par John Smith" est beaucoup plus clair que "John Smith était l'additionneur de la Part". – sdolan

+0

@sdolan merci pour l'homme de pointe – user1328021

Répondre

2

Essayez ceci,

User.objects.filter (id__in = Part.objects.values_list ('sommateur', plat = true))

+0

Oh ... intéressant. Est-ce parce que c'est une relation de clé étrangère? Est-ce que la façon dont je l'ai écrit fonctionnerait si c'était une relation non étrangère? (c'est-à-dire juste un champ régulier)? Juste curieux ... – user1328021

+1

Eh bien, c'est vraiment simple Clé étrangère est une relation de plusieurs à un si elle aurait été une relation de plusieurs à beaucoup ce que vous essayez de faire aurait été possible! Si vous essayez juste d'obtenir tout l'additionneur en utilisant ce Part.adder.all() cela va déclencher une erreur comme ce n'est pas le cas dans une relation many-to-many. –

Questions connexes