2016-08-17 5 views
5

スペース/空白行をストリッピングされ、それがデフォルトでCharFieldsストリップスペースがDjangoの1.9の新機能であることが判明: https://docs.djangoproject.com/en/1.9/ref/forms/fields/#django.forms.CharField.stripジャンゴのTextField/CharFieldですが、私はちょうど私の「バグ」を調査

同じ縫い目適用しますテキストフィールド。 Djangoが突然、以前とは違った動作をする理由を知りましたが、自動生成された管理フォームの以前のデフォルトを復元する簡単な方法はありますか?

IDは、管理者から自動生成されたフォームを使用しているときに空白を削除しないようにします。それはまだ可能ですか?

答えて

2

これを処理するための最良の方法は、このようなカスタムのadminフォームを作成することであるように思える:

class CustomForm(forms.ModelForm): 
    my_field = forms.CharField(strip=False, widget=forms.Textarea) 

    class Meta: 
     model = MyModel 
     exclude = [] 

これは単なるmy_fieldその非取り除いたバージョンで上書きしてデフォルトのフォームを作成します。これは対応する管理者に設定する必要があります。誰かがもっと簡単なバージョンを知っていれば。教えてください!

-2

は、次を試してみてください。CharFieldsのモデルフィールドに

my_field = models.CharField(max_lenght=255, strip=False) 
+1

そのモデルフィールドでサポートされていませんが、フィールドだけ –

6
strip=False 


Django TextFieldはこのストリッピング機能をサポートしていないため、あなた自身で行う必要があります。ストリップ方式を使用できます。

abc.strip() 
+2

を形成ドキュメントによると、ストリップのパラメータは、フォームに対してのみ有効です。私はもちろん、試してみました: TypeError:__init __()は予期しないキーワード引数 'strip'を持っています –

+0

と私は上記のように私はDjango 1.9で始まるデフォルトのストリップ機能を削除したい - 私は基本的に李それは、私の現在のプロジェクトのために私はスペースを離れて取り除かれていません –

1

この使用してみてください:

# fields.py 
from django.db.models import TextField 


class NonStrippingTextField(TextField): 
    """A TextField that does not strip whitespace at the beginning/end of 
    it's value. Might be important for markup/code.""" 

    def formfield(self, **kwargs): 
     kwargs['strip'] = False 
     return super(NonStrippingTextField, self).formfield(**kwargs) 

そして、あなたのモデルで:

class MyModel(models.Model): 
    # ... 
    my_field = NonStrippingTextField() 
+0

それはいいアイデア..私はこの問題に遭遇する次回をチェックします:) –

関連する問題