2

私は自分のプロジェクトにDjango 1.5.3andを使用しています。PostgreSQL私のテーブルにはCIDR型フィールドがあり、Django でモデル化したいと考えていました。私はCIDRFieldlike を使用しています。

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を使用する必要があります。rawfilter

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

また、CIDRField 以外の別のフィールドがあり、このテーブルに関するすべてのクエリを .xml で作成したくありませんraw。また、両方を使用する方法もありません。

CIDRField をそれ以上にカスタマイズして、raw の代わりに filter を使用して CIDRField のクエリを実行できるかもしれません。たとえば、、、またはルックアップ関数をカスタマイズgtできますかgte? , , の代わりに, ,を探しているのでしょうか。Django でこの演算子をカスタマイズできますか?ltlte<<<<=>>>>=<<=>>=

ありがとうございました。

4

0 に答える 0