Django, ¿Cuál es la mejor y más rápida manera de obtener solo el primer y último elemento de algo, Customer.objects.xxxx?

Django, ¿Cuál es la mejor y más rápida manera de obtener solo el primer y último elemento de algo, Customer.objects.xxxx, tal filtro, value_list o …

Probablemente la forma más pythonica:

myset = Customer.objects.filter().order_by() first, last = myset[0], myset.reverse()[0] 

¿Cuál es la mejor y más rápida manera de obtener primero y último?

Dejanos ver.

 customers = Customer.objects.filter(**conditions) first = customers.order_by('id')[0] last = customers.latest('id') 

Por supuesto, si puede realizar una consulta SQL para hacer esto, podría ejecutarse utilizando el método raw() .

 query = "" Customer.objects.raw(query) 

No estoy totalmente familiarizado con el funcionamiento interno de django, pero asumiría que la forma más rápida de hacerlo sería:

 elements = Customer.objects.filter() first_element = elements[0] last_element = elements[-1]