En SQL sería:
SELECT *, 0 as new_field FROM table;
Pensé que en Django sería como
Article.objects.annotate(new_field=0)
Pero no funciona Me sale el error:
TypeError: QuerySet.annotate() received non-expression(s): 0.
¿Hay alguna manera de hacerlo?
3 respuestas
Otra solución que puede probar value-expressions:
from django.db.models import Value, IntegerField
Article.objects.annotate(new_field=Value(0, output_field=IntegerField()))
Lo que puede hacer es utilizar Coalesce.
from django.db.models.functions import Coalesce
Article.objects.annotate(annotated=Coalesce(Count("field"), 0))
Si desea exactamente el mismo comportamiento de esta declaración SQL: SELECT 0 as new_field ...
Puede utilizar:
Article.objects.extra({'new_field': 0})
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.