10
votes

Django Query Les valeurs distinctes fonctionnent mais je ne peux pas utiliser le résultat de la requête

J'ai une colonne de table que certaines valeurs sont doubles ou triples écrites. Je veux avoir une requête distincte.

J'ai essayé xxx

i get "objet dict n'a pas attribuer comme personne" pour k.person

Et je reçois K me donne un résultat comme xxx

Savez-vous comment puis-je obtenir la valeur de la personne?


2 commentaires

"K" est une dict. Accès par k ['personne']


Maintenant, il y a valides_list ()


3 Réponses :


20
votes

Ce n'est pas un problème avec distinct code> mais avec valeurs () code>. Valeurs () CODE> Vous donne la dict de valeurs que vous avez demandées. Et pour obtenir un attribut à partir de dict, vous pouvez utiliser dict ['attr_name'] code>.

Vous pouvez donc essayer ceci: p>

staff = Staff.objects.all().values('person').distinct()
for k in staff:
    j = k['person']
    print j,k


0 commentaires

3
votes

@ @rohan a raison. dict ['attr_name'] vous donnera ce que vous voulez. xxx

à côté de ceci si vous utilisez ce patch , vous pouvez y parvenir comme la structure suivante: xxx


0 commentaires

-1
votes
query = Entity.objects.filter(field=x).order_by('field').distinct('field_name')

distinct('field_name') not supported? you can do the following.


----------


    query = Entity.objects.filter(field_name=value).order_by('field')

    copy1 = []

    copy2 = []
for data in query:
    if data.field_name not in copy1:
            copy1.append(data.field_name)
            copy2.append(data)


    query = copy2

3 commentaires

# Si Field_Name est une fourchette élégante, utilisez Tiel_Name.pk


Salut Sayeem! Bienvenue dans le débordement de pile. Assurez-vous de lire les directives - ne fournissez pas simplement du code comme une réponse, dites-nous un peu de votre solution!


Fonctionne probablement génial, mais cela chargera toujours tout. Ce n'est pas optimisé. Alors n'utilisez pas cela avec de super jeux de données.