2013-02-06 16 views
7

Djangoフォームでは、ユーザが空白のままにした場合、フィールドのデフォルト値をどのように指定しますか?初期値は初期値を設定しますが、ユーザーはこれを削除できます。Djangoフォーム:ユーザがフィールドを空白のままにした場合のデフォルト値

+0

私はあなたがフィールド検証(clean_fieldname)メソッドに対処することができます – daveoncode

+0

モデルにデフォルト値を設定するべきだと思います。ありがとう、clean_fieldnameは行く方法だと思われます。https://docs.djangoproject.com/en/dev/ref/forms/validation/ – PepperoniPizza

+0

私はフィールドを定義するときにそれを指定する方法があることを望んでいたが、私はそうは思わない。 – user984003

答えて

6

あなたは単にダンのアドバイスに従うModelFormを使用している場合。

ただし、単にFormを使用している場合は、検証の対処方法を指定する必要があります。 Example Documentation

class YourForm(forms.Form): 
    ... 

    def clean_field(self): 
     data = self.cleaned_data['field'] 
     if not data: 
      data = 'default value' 

     return data 
+0

'def clean_field(self):return self.cleaned_data ['field']または 'default value'' –

4

Set a default value in the model.

class YourModel(models.Model): 
    this_field = models.TextField(default="default_value") 
+0

私はforms.CharField(デフォルト= "0")を試して、エラーメッセージを受け取りました: "__init __()は予期しないキーワード引数 'default'を持っています" – user984003

+0

フォームではなく実際のモデルに追加してください。モデルは 'models.py'にあります。この方法でモデルのコピーを保存した場合(フォームを使用している場合)、空白のままにしておくとデフォルト値がそのモデルに追加されます。私はこれは、特にあなたが管理者の使用を許可しようとしている場合は、フィールドの検証よりも良い解決策だと思う。 –

+0

ああ、私はあなたが意味するものを参照してください。はい、それは私のフォームとモデルがまったく一致しないことを除いて動作します。フォームフィールドは、同じ列のすべての行です。 – user984003

関連する問題