[解決済み] CharFieldの長さを固定にする方法は?
2023-03-16 18:49:16
質問
モデル内に長さが固定されたCharFieldを持ちたいと考えています。言い換えれば、私は指定された長さだけが有効であることを望む。
私は次のようなことをしようとしました。
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
と表示されますが、エラーになります(max_lengthとmin_lengthは同時に使用できるようです)。
他に手っ取り早い方法はないでしょうか?
私のモデルはこれです。
class Volume(models.Model):
vid = models.AutoField(primary_key=True)
jid = models.ForeignKey(Journals, db_column='jid', null=True, verbose_name = "Journal")
volumenumber = models.CharField('Volume Number')
date_publication = models.CharField('Date of Publication', max_length=6, blank=True)
class Meta:
db_table = u'volume'
verbose_name = "Volume"
ordering = ['jid', 'volumenumber']
unique_together = ('jid', 'volumenumber')
def __unicode__(self):
return (str(self.jid) + ' - ' + str(self.volumenumber))
私が欲しいのは
volumenumber
は正確に4文字でなければならないということです。
すなわち を挿入すると、django は 4 文字の文字列を期待しているので、エラーを出します。
そこで、私は
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
と入力しても、このようなエラーになります。
Validating models...
Unhandled exception in thread started by <function inner_run at 0x70feb0>
Traceback (most recent call last):
File "/Library/Python/2.5/site-packages/django/core/management/commands/runserver.py", line 48, in inner_run
self.validate(display_num_errors=True)
File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "/Library/Python/2.5/site-packages/django/core/management/validation.py", line 28, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/Library/Python/2.5/site-packages/django/db/models/loading.py", line 131, in get_app_errors
self._populate()
File "/Library/Python/2.5/site-packages/django/db/models/loading.py", line 58, in _populate
self.load_app(app_name, True)
File "/Library/Python/2.5/site-packages/django/db/models/loading.py", line 74, in load_app
models = import_module('.models', app_name)
File "/Library/Python/2.5/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Users/Giovanni/src/djangoTestSite/../djangoTestSite/journaldb/models.py", line 120, in <module>
class Volume(models.Model):
File "/Users/Giovanni/src/djangoTestSite/../djangoTestSite/journaldb/models.py", line 123, in Volume
volumenumber = models.CharField('Volume Number', max_length=4, min_length=4)
TypeError: __init__() got an unexpected keyword argument 'min_length'
これは明らかに "max_length" or "min_length" だけでは表示されないですね。
djangoのWebサイトのドキュメントを読みましたが、私が正しいようです(両方を一緒に使うことはできません)ので、問題を解決するための他の方法があるかどうかを尋ねています。
どのように解決するのですか?
CharFieldデータベースモデルのフィールドインスタンスには、以下のようなものしかありません。
max_length
パラメータで示されるように
ドキュメント
. これは、おそらく SQL では最大文字数の制約に相当するものしかないためです。
フォームフィールド CharField
一方、オブジェクトには
min_length
パラメータがあります。ですから、この特定のモデルのためにカスタムの ModelForm を書き、カスタムのものでデフォルトの管理モデルフォームをオーバーライドする必要があります。
というような感じです。
# admin.py
from django import forms
...
class VolumeForm(forms.ModelForm):
volumenumber = forms.CharField(max_length=4, min_length=4)
class Meta:
model = Volume
class VolumeAdmin(admin.ModelAdmin):
form = VolumeForm
...
admin.site.register(Volume, VolumeAdmin)
関連
-
django のクエリセット操作
-
ImproperlyConfiguredです。DEFAULT_INDEX_TABLESPACE の設定を要求されましたが、設定されていません。
-
[解決済み] Django のフォームで、あるフィールドを編集できないように readonly (または disabled) にするにはどうしたらいいですか?
-
[解決済み] Django のクエリで OR フィルタを行うにはどうすればよいですか?
-
[解決済み] Djangoテンプレート内でコレクションのサイズを確認するにはどうすればよいですか?
-
[解決済み] Docker-Compose使用時にDjangoデータベースのマイグレーションをどのように行うか?
-
[解決済み] egg_infoエラーでpipからインストールできない
-
[解決済み] django テンプレートで "ブロック" を繰り返す方法
-
[解決済み] django のモデルのクラス名を取得する
-
[解決済み] django のユニットテストを複数のファイルに分散させるには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Djangoでファイルをアップロードする方法は?[クローズド]。
-
[解決済み] Django のフォームで、あるフィールドを編集できないように readonly (または disabled) にするにはどうしたらいいですか?
-
[解決済み] Django のクエリで OR フィルタを行うにはどうすればよいですか?
-
[解決済み] Django REST Framework: ModelSerializerに追加フィールドを追加する
-
[解決済み] Django ManyToMany filter()
-
[解決済み] Django が ManyToMany リレーションシップからオブジェクトを取り除く
-
[解決済み] Django: テンプレート内からセッション変数にアクセスする?
-
[解決済み] 学習に適したオープンソースのdjangoプロジェクト【非公開
-
[解決済み] Djangoのクッキー、どうすれば設定できますか?
-
[解決済み] django テンプレートで "ブロック" を繰り返す方法