SORU
22 Kasım 2008, CUMARTESİ


Django, nasıl bir dinamik alan aramaları QuerySet filtre?

Belirli bir sınıf

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=20)

Filtreler dinamik argümanlar dayalı şekilde, eğer nasıl bir QuerySet olması mümkün mü? Örneğin:

 # Instead of:
 Person.objects.filter(name__startswith='B')
 # ... and:
 Person.objects.filter(name__endswith='B')

 # ... is there some way, given:
 filter_by = '{0}__{1}'.format('name', 'startswith')
 filter_value = 'B'

 # ... that you can run the equivalent of this?
 Person.objects.filter(filter_by=filter_value)
 # ... which will throw an exception, since `filter_by` is not
 # an attribute of `Person`.

Çok makbule geçer ve şimdiden teşekkür ederim yardım.

CEVAP
22 Kasım 2008, CUMARTESİ


Python savı genişleme bu sorunu çözmek için kullanılabilir:

kwargs = {
    '{0}__{1}'.format('name', 'startswith'): 'A',
    '{0}__{1}'.format('name', 'endswith'): 'Z'
}

Person.objects.filter(**kwargs)

Bu çok yaygın ve kullanışlı Python bir deyim vardır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • celebrateubuntu

    celebrateubu

    23 Mayıs 2011
  • Ownage Pranks

    Ownage Prank

    13 AĞUSTOS 2007