Django管理サイトからデータを追加する際に大文字と小文字を変更します

StackOverflow https://stackoverflow.com/questions/825955

  •  05-07-2019
  •  | 
  •  

質問

新しいプロジェクトの管理サイトを設定していますが、管理サイトからデータを追加するときに「保存」をクリックすると、すべてが大文字に変換されます...

編集:わかりました。 p>

役に立ちましたか?

解決

管理セクションで保存するときに、大文字に変換することのみを目標とする場合は、カスタム検証を使用してフォームを作成して、ケースを変更します:

class MyArticleAdminForm(forms.ModelForm):
    class Meta:
        model = Article
    def clean_name(self):
        return self.cleaned_data["name"].upper()

目標を常に大文字にする場合は、モデルフィールドで保存を上書き

class Blog(models.Model):
    name = models.CharField(max_length=100)
    def save(self, force_insert=False, force_update=False):
        self.name = self.name.upper()
        super(Blog, self).save(force_insert, force_update)

他のヒント

ドキュメントから更新された例では、args、kwargsを使用してパススルーすることを提案しています:

  

Djangoは、ビルトインの機能を随時拡張します   モデルメソッド、新しい引数の追加。 * argsを使用する場合、** kwargs in   メソッド定義、あなたのコードが保証されます   それらの引数が追加されたときに自動的にサポートします。

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def save(self, *args, **kwargs):
        do_something()
        super(Blog, self).save( *args, **kwargs) # Call the "real" save() method.
        do_something_else()

override save( )。ドキュメントの例:

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def save(self, force_insert=False, force_update=False):
        do_something()
        super(Blog, self).save(force_insert, force_update) # Call the "real" save() method.
        do_something_else()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top