2011-01-13 12 views
26

cuando hago esto¿Qué es un django QuerySet?

>>> b = Blog.objects.all() 
>>> b 

consigo este

>>>[<Blog: Blog Title>,<Blog: Blog Tile>] 

Cuando i interrogar acerca de qué tipo b es decir,

>>> type(b) 

consigo este

>>> <class 'django.db.models.query.QuerySet'> 

Lo que hace esto significa ? ¿es un tipo de datos como dict, list, etc.?

Se apreciará un ejemplo de cómo puedo construir una estructura de datos como un QuerySet.

me gustaría saber cómo construir Django que QuerySet (los detalles sangrientos)

Gat.

+1

Usted puede mirar en el código fuente de Django para ver los detalles morbosos. Aparte de eso, un QuerySet es solo un objeto como muchos otros que a veces se comporta como una lista. –

+0

Para lo que es: http://docs.djangoproject.com/en/dev/ref/models/querysets/ Para saber cómo funciona, como ya se mencionó, eche un vistazo al código fuente. –

+0

¿Por qué se bajó este valor? – Davy8

Respuesta

25

A django queryset es como su nombre lo dice, básicamente una colección de consultas (sql), en su ejemplo anterior print b.query le mostrará la consulta SQL generada a partir de sus llamadas django filter.

Dado que los conjuntos de consulta son lazy, la consulta de la base de datos no se realiza de inmediato, sino solo cuando es necesario, cuando el conjunto de consulta es evaluado. Esto sucede, por ejemplo, si llama al método __str__ cuando lo imprime, si llama al list() en él o, lo que ocurre principalmente, lo itera (for post in b..). Esta pereza debería evitarle realizar consultas innecesarias y también le permite encadenar querysets y filtros, por ejemplo (puede filtrar un queryset tan a menudo como desee).

1

Un QuerySet representa una colección de objetos de su base de datos. Puede tener cero, uno o muchos filtros. Los filtros reducen los resultados de la consulta en función de los parámetros especificados. En términos SQL, un QuerySet equivale a una instrucción SELECT, y un filtro es una cláusula limitante como WHERE o LIMIT.

https://docs.djangoproject.com/en/1.8/topics/db/queries/

Cuestiones relacionadas