2017-08-02 35 views
0

私は何かのように見えるモデルがあります:デフォルトフォームのDjangoモデルのデフォルト値を上書きしますか?

class DooDad(models.Model): 
    doo_dad_dogue = models.BooleanField(default=True) 

トラブルは、デフォルトのニーズが、この質問には無関係である...ものによって操作されること、です。オブジェクトを作成するフォームを作成していた場合、その解決策は簡単になります。 私はまだこれらのものを作成するためにdjangoのデフォルトフォームを使用していますが、私はむしろそれをそのままにしておきたいと思います。私は疑う

class DooDad(models.Model): 
    doo_dad_dogue = models.BooleanField(default=True) 

    def __init__(self, *args, **kwargs): 
     super(DooDad, self).__init__(*args, **kwargs) 
     self.doo_dad_dogue = False 

が...ひどい副作用を持っているだろうが、を試して価値があった:

私は明白なことを試してみました。フォームはまだボックスがチェックされた状態で表示されます。

編集:私は、これはそれがデフォルトのモデル作成フォームを継続して使用することができない場合、私は唯一のModelFormを作るために行う必要があることを何も異常がある

ジャンゴ1.9であることを言及している必要がありますCREATEに影響し、EDITには影響しませんか?

答えて

0

私は__init__inモデルを使うのは良い方法ではないと思います。しかし、あなたのコードが正しくないことを知ることが大切です。doo_dad_dogueフィールドは記述子です。それにアクセスする正しい方法は で、self.fields['doo_dad_dogue'] = Falseを使用しています。

フォームを使用するのが正しい方法です。助け

def __init__(self, *args, **kwargs): 
    super(<YOUR_FORM>, self).__init__(*args, **kwargs) 
    if args is not None and len(args) and args[0] is not None: 
     <MANIPULATE HERE> 

希望:あなたはのinitメソッドを使用して、フォームのデフォルト値を上書きすることができます。

関連する問題