7

新しいプロジェクトの管理サイトを構成していますが、管理サイトからデータを追加するときに「保存」を押すと、すべてが大文字に変換されるため、どうすればよいか少し疑問があります...

編集:わかりました.upperプロパティを知っています.upperプロパティを知っています.

4

3 に答える 3

17

admin セクションに保存するときに大文字のみに変換することが目標の場合は、カスタム検証を使用してフォームを作成し、大文字と小文字を変更する必要があります。

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

値を常に大文字にすることが目標の場合は、モデル フィールドでsave をオーバーライドする必要があります。

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)
于 2009-05-05T17:52:51.200 に答える
3

ドキュメントの更新された例では、args、kwargs を使用して次のように渡すことを提案しています。

Django は、組み込みのモデル メソッドの機能を拡張し、新しい引数を追加します。メソッド定義で *args、**kwargs を使用すると、それらの引数が追加されたときにコードがそれらの引数を自動的にサポートすることが保証されます。

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()
于 2012-04-09T11:52:36.277 に答える
1

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()
于 2009-05-05T17:40:47.940 に答える