Почему Django запрашивает id в необработанных запросах?

Я делаю необработанный запрос в Django 3.10.5.
###################################
MediosBasicos.objects.raw('SELECT descripcion, COUNT("descripcion") AS "descrip" FROM "basedatos_mediosbasicos" GROUP BY "descripcion"')
###################################
Но по какой-то причине он запрашивает у меня id. Это не имеет смысла. Кто-нибудь знает, почему это происходит или какова цель этого?

Прежде всего, вам следует избегать выполнения необработанных запросов, если только в Django ORM нет ничего подходящего для ваших нужд (я сомневаюсь, что это так, поэтому вам следует проверить Django ORM doc).

Если вам все еще нужно сделать необработанный запрос, вы должны включить id в запрос, как говорится в документации Django :

There is only one field that you can’t leave out - the primary key field. Django uses the primary key to identify model instances, so it must always be included in a raw query. A FieldDoesNotExist exception will be raised if you forget to include the primary key.

https://docs.djangoproject.com/en/4.1/topics/db/sql/#deferring-model-fields

Вернуться на верх