Мне удалось получить результаты, которые я хотел, используя следующий код:
Device.where('devices.ipaddress <<= ANY(ARRAY[?]::inet[])', Network.pluck('TEXT(cidr)'))
Приведение Network.cidr к TEXT было необходимо, чтобы избежать ошибки «TypeError: не может процитировать IPAddr». [ 112]
Затем мне пришлось преобразовать массив в inet [], чтобы < < оператор будет работать.
Я никогда не использовал эти API, но роющий через код, похоже, что класс передал в, используется для регистрации названия класса в реестре, таким образом, Вы не можете сделать никакой собственной инициализации. Но существует метод под названием GetServiceCustomOption, который может помочь:
http://mail.python.org/pipermail/python-win32/2006-April/004518.html
I just create a simple "how to" where the program is in one module and the service is in another place, it uses py2exe to create the win32 service, which I believe is the best you can do for your users that don't want to mess with the python interpreter or other dependencies.
You can check my tutorial here: Create win32 services using Python and py2exe