Django ‘di oggetti.filter()’ con la lista?

È possibile limitare QuerySet in questo tipo di modo:

creators_list = ['jane', 'tarzan', 'chita']
my_model.objects.filter(creator=creators_list)

???

InformationsquelleAutor krzyhub | 2011-05-10

 

One Reply
  1. 38

    Vuoi dire questo?

    my_model.objects.filter(creator__in=creator_list)

    Documenti: http://docs.djangoproject.com/en/dev/ref/models/querysets/#in

    MODIFICA

    Questo è ormai un po ‘ obsoleto. Se si esegue in problemi con il codice originale, provate questo:

    from django.db.models import Q
    
    my_filter_qs = Q()
    for creator in creator_list:
        my_filter_qs = my_filter_qs | Q(creator=creator)
    my_model.objects.filter(my_filter_qs)

    Probabilmente c’è un modo migliore per farlo, ma io non sono in grado di testarlo al momento.

    • Supponendo, naturalmente, che il creatore campo è un CharField di qualche tipo
    • Greate uomo. Lasciate che L’universo Vi benedica 🙂
    • Se funziona per te, sentiti libero di colpire di accettare.
    • Non è la benedizione dell’Universo abbastanza ;)?
    • Ti supponendo che ci sia qualcosa di più di Universo?
    • Grazie per il link django documenti del Bryce. Ho scritto questo, ma in passato e la mia conoscenza è di meglio in una parte di django, a causa del tempo che scorre, ma ho voglia di imparare qualcosa da persone come Voi in modo dritto:)
    • Che cosa di più Bryce?
    • forse c’è più di un Universo e forse siamo solo parte di un multiverso :p, non si sa mai.
    • Grazie.
    • Multiworlds? Potrebbe essere, forse. Ma cosa pensate dell’idea che tutto è solo un computer di lavoro? Diuglas Adams scritto in un suo libro: “Qual è il senso della vita, l’Universo e tutto quanto? 42” 😀
    • Grazie a Te, Bryce.
    • Non riesco __in a lavorare con i caratteri anche quando il campo è un CharField. E secondo la documentazione funziona solo con numeri interi.
    • Potrebbe essere obsoleto ora come questo è stato inviato a circa 3 anni fa, ma non vedo nulla nei documenti in cui si dice che funziona solo con i numeri interi. Essa mostra anche un esempio in cui si utilizza una sottoquery per trovare dinamicamente una lista di stringhe e l’uso di tali risultati il parametro di ricerca. Che cosa fa la tua query simile?
    • Potrebbe essere necessario utilizzare una sottoquery alla docs esempio. inner_qs = Blog.objects.filter(name__contains='Ch').values('name') entries = Entry.objects.filter(blog__name__in=inner_qs)

Lascia un commento