Почему этот аннотированный django queryset со значениями rawSQL не устанавливается, а необработанный запрос возвращает результаты?

Проблема в том, что кверисет django не содержит данных из необработанного sql запроса

interfaces = Interface.objects.filter(
    membership__in=membership_set
).annotate(
    utilisation=RawSQL(
        'SELECT utilisation FROM interfacestat WHERE interface.name = interfacestat.ifl AND interfacestat.date = "%s"'
        ,(recent_date,)
    ),
).order_by('name')

Итак, я использую выражение RawSQL для заполнения поля utilisation.

Я проверяю необработанный sql с помощью print(interfaces.query) и запускаю его непосредственно в MySQL. Он возвращает результаты для поля utilisation на нескольких записях - однако, когда я прохожусь циклом по набору запросов, поле utilisation всегда остается неустановленным (None).

eg.

interfaces[0].__dict__
{'_state': <django.db.models.base.ModelState object at 0x109b1fdf0>, 'id': 230083, 'name': 'ae1.3216', ...'utilisation': None}

Просмотр:

ipdb> all = interfaces.values()
ipdb> for item in all:
    print(item.get('utilisation'))
 
None
None
None
None
None
None
None
None
None
None
None
None
None
Вернуться на верх