2

我正在为我的项目使用Django 1.5.3PostgreSQL。我的表中有CIDR类型字段,我想在 Django 中对其进行建模。我正在使用一个CIDRField赞;

class CIDRField(models.Field):
    def __init__(self, *args, **kwargs):
        super(CIDRField, self).__init__(*args, **kwargs)

    def db_type(self, connection):
        return "CIDR"

    def to_python(self, value):
        return str(value)

    def get_db_prep_value(self, value, connection, prepared=False):
        # Convert value to pure network address to prevent
        # PostgreSQL exception
        if IP.prefix(value):
            return IP.prefix(value).first.prefix

当我使用 查询表时CIDRField,我必须使用raw而不是filter;

select * from ip_table where ip<<'0.0.0.0/0'

但是我还有另一个非 CIDRField 字段,我不想用raw. 我也没有办法同时使用它们。

也许我可以定制更多的 CIDRField,我可以使用过滤器而不是 raw 来查询 CIDRField。例如,我可以自定义、、gt或查找函数吗?他们可以寻找, , ,而不是, , , . 我可以在 Django 中自定义此运算符吗?gteltlte<<<<=>>>>=<<=>>=

谢谢你。

4

0 回答 0