Django, Bir şeyden yalnızca ilk ve son öğeyi almanın en iyi, en hızlı yolu nedir, Customer.objects.xxxx filtre, value_list ya ...Django, Bir şeyden sadece ilk ve son öğeyi almanın en iyi, en hızlı yolu nedir, Customer.objects.xxxx
cevap
Muhtemelen en pythonic yolu:
myset = Customer.objects.filter(<something>).order_by(<something>)
first, last = myset[0], myset.reverse()[0]
sadece ilk almak için en iyi, en hızlı yolu nedirve son
görelim. Eğer raw()
yöntemi kullanılarak infaz edilmesi bunu yapmak için bir SQL sorgusu ile gelebilir eğer tabii Of
customers = Customer.objects.filter(**conditions)
first = customers.order_by('id')[0]
last = customers.latest('id')
.
query = "<your query to get first and last>"
Customer.objects.raw(query)
You iki kez sorgu yazmak zorunda değilsiniz: myset = Customer.objects.filter (** koşullar); first = myset.order_by ('id') [0]; last = myset..latest ('id') –
@Tomas: Elbette haklısın. Düzeltildi. –
ben django iç işleyişini tamamen aşina değilim ama bu olurdu yapmak için en hızlı yol varsayılabilir:
elements = Customer.objects.filter(<something>)
first_element = elements[0]
last_element = elements[-1]
'last_element = ögeler [-1]' bir hata verecek; negatif endeksleme Querysets tarafından desteklenmez. Hangi SQL verilen ("LIMIT" yan tümcesi) kullanarak düşünürseniz anlamlıdır. –
İlk/son_element tanımlaması da elbette gerekli değildir. –
@Manoj tamamen haklısınız. İyi yakalama. –
+1. Özlü ve evet, Pythonic. –
bir queryset üzerinde .reverse() kullanabileceğinizi bilmiyordum, güzel! Endeksleme doğrudan kullanarak – monkut
gerçekten pythonic nedir? – Shashank