問題は、CIDR形式のデータを受け入れてデータベース(Postgres)に入れることができるはずのDjango Adminプロジェクトに取り組んでいることです。
モデルがあるとしましょう:
##################################################
class CIDR(models.Model):
....
net_cidr = models.IPAddressField(unique=True)
....
def __unicode__(self):
return self.net_cidr
##################################################
上記のコードに基づいてnet_cidr
、データベースのフィールドは CIDR 形式のデータをサポートする inet タイプです。ただし、IPAddressField
CIDR はサポートしていません (少なくとも私には機能しません)。管理サイトに「128.66.0.0/16」などの何かを入力したい場合、Django はエラーを表示し、「有効な IPv4 アドレスを入力してください」と通知します。
フィールド タイプを Char に変更しようとしましたが、(もちろん) 動作します。ただし、データベースで CIDR を varchar として設定することはお勧めできません。
基本的に私が望むのはnet_cidr
、「128.66.0.0-128.66.255.255」またはCIDRブロック「128.66.0.0/16」のようなIP範囲を受け入れて、「128.66.0.0/16」としてデータベースに保存できるようにすることです.
IPAddressField
重要な部分は、文字列型 (IP 範囲や CIDR ブロックなど) のデータを受け入れる方法だと思います。次に、それを CIDR ブロックに変換してデータベースに保存できます。