Nov 16, 2011
|
Потому что я могу делать так:
c.nets = s.query(Net)
ip_type = request.GET.get('ip_type', '')
if ip_type=='4':
c.nets = s.query(Net).filter("family(cidr)=4")
elif ip_type=='6':
c.nets = s.query(Net).filter("family(cidr)=6")
c.nets = c.nets.order_by(Net.cidr).all()
Здесь если GET переменная ip_type=4
то выбираются все строки где cidr
IPv4, если 6 то все стоки где cidr
IPv6, иначе просто отдается все. Для
фильтрации используется стандартная функция Postgres family
. Пример
был так расписан для наглядности, теперь сократим:
c.nets = s.query(Net)
ip_type = request.GET.get('ip_type', '')
if ip_type:
c.nets = s.query(Net).filter("family(cidr)=%s" % ip_type)
c.nets = c.nets.order_by(Net.cidr).all()
По моему это просто шЫкарно.