Django sorgu ifadelerinin bir listesini almanın bir yolu var mı (ör. Q
, Q
django.db.models.Q
) ve bitwise VEYA birlikte mi? Başka bir deyişleBit işlemleri için Python listesi
, ben böyle bir şey var:
search_string = "various search terms"
Ve bunu yapmak istiyorum: search_params
şimdi Q(description__icontains="various") | Q(description__icontains="search" | Q(description__icontains="terms"
eşdeğerdir
search_params = [Q(description__icontains=term) for term in re.split(r'\W', search_string)]
search_params = something_magical(search_params)
results = Record.objects.filter(search_params)
Ben öyle olacağına biliyorum böyle bir işlevle mümkün olabilir:
def something_magical(lst):
result = lst[0]
for l in lst[1:]
result |= l
return result
Bu işlevin Python'da zaten yerleşik olup olmadığını merak ediyorum (ve bunun benim işlevimden daha iyi olduğunu varsayıyorum).
Bu uygulama için onunla ilgilenmeme rağmen, sadece teorik olarak ilgileniyorum.
Böyle bir django operatörü olduğunu sanmıyorum ... Ama tüm "veya" sorgularını yapabilir ve daha sonra sonuçları birleştirmek için python seti operatörlerini kullanabilirsin? (http://docs.python.org/library/sets.html#set-objects) –
@RichardGreen oldukça çirkin sorular yaratabilir –