Как зарегистрировать postgres для отправки данных CIDR в правильном формате - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь воссоздать что-то в старой системе Django 1.8.19. Выяснение того, как это работало, имеет решающее значение для того, что я должен сделать, чтобы воссоздать его на поддерживаемых уровнях Django.

У меня есть модель Django с полем netfields.CidrAddressField, которое, как мне кажется, хранится как поле CIDR в Postgress. Но всякий раз, когда я получаю QuerySet от postgres, я получаю исключение ProgrammingError.

Я предполагаю, что Postgres не может упорядочить данные в формат, понятный Python.

Спасибо

Полагаю, это связано с тем, что не установлен требуемый файл psycopg2.extras.register. Но я верю, что перепробовал их все.

Определения:

from django.db import models
import netfields
import ipaddress

class MyCIDR(models.Model):
   net_cidr = netfields.CidrAddressField()

Код:

new_cidr = ipaddress.IPv4Network(u'1.2.3.4/24')
MyCIDR.objects.extra(where=['net_cidr = %s'], params=[new_cidr])

Сообщение об ошибке:

ProgrammingError: can't adapt type 'IPv4Network'

Я ожидал получить список MyCIDR

[ MyCIDR(u'1.2.3.4/24')]
...