[解決済み】Djangoモデルで数値フィールドの最大値を制限する方法は?
質問
Django には、モデルで使用できる様々な数値フィールドがあります、例えば 10進フィールド と PositiveIntegerField . 前者は格納する小数点以下の桁数や全体の文字数を制限することができますが、後者は格納する文字数を制限する方法はありますか? のみ 0.0-5.0など、特定の範囲にある数値のことですか?
PositiveIntegerField に、例えば 50 までの数字だけを格納するように制限する方法はありますか?
更新:現在、Bug 6845 は終了しました。 このStackOverflowの質問は無意味かもしれません。- サンパブロクパー
解決方法は?
また、カスタムモデルのフィールドタイプを作成することもできます。 http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#howto-custom-model-fields
この場合、組み込みの IntegerField を '継承' して、その検証ロジックをオーバーライドすることができます。
このことを考えれば考えるほど、これは多くの Django アプリにとってどれほど有用であるかということに気がつきます。おそらく IntegerRangeField 型をパッチとして提出し、Django の開発者が trunk に追加することを検討することができます。
これは私のために動作しています。
from django.db import models
class IntegerRangeField(models.IntegerField):
def __init__(self, verbose_name=None, name=None, min_value=None, max_value=None, **kwargs):
self.min_value, self.max_value = min_value, max_value
models.IntegerField.__init__(self, verbose_name, name, **kwargs)
def formfield(self, **kwargs):
defaults = {'min_value': self.min_value, 'max_value':self.max_value}
defaults.update(kwargs)
return super(IntegerRangeField, self).formfield(**defaults)
そして、モデルクラスでは、次のように使用します (field は、上記のコードを置いたモジュールです)。
size = fields.IntegerRangeField(min_value=1, max_value=50)
ORで負と正の範囲(オシレータの範囲のようなもの)を表す。
size = fields.IntegerRangeField(min_value=-100, max_value=100)
本当にクールなのは、このように範囲演算子で呼び出すことができることでしょう。
size = fields.IntegerRangeField(range(1, 50))
しかし、「スキップ」パラメータを指定することができるので、その場合、多くのコードが必要になります - range(1, 50, 2) - 面白いアイデアですが......。
関連
-
python call matlab メソッドの詳細
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] ディクショナリーで最大値を持つキーを取得する?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac