2016-11-17 9 views
0

「Opis」と呼ばれるTextFieldを含む私のモデル用の入力フォームがありました。モデルのインスタンスが正常にデータベースに保存されました。しかし、その特定のビットを書き込んだり格納したりするときに、ユーザーにもっと多くの選択肢を与えたいと思っていました。だから私は、TinyMCEのをインストールしHTMLFieldにTextFieldを変更し、一緒に私のテンプレートの先頭にTextFieldがHTMLFieldに変更された後にフォームがデータベースに保存されなくなりました

<head> {{ form.media }} </head> 

を置くと、これは、TinyMCEのウィジェットとしてレンダリングされる入力フィールドのために十分であることを発見しました。つまり、私は古いModelFormを保持していて、表示されたものが変更されました。これは素晴らしく便利だと思いました。ただし、ユーザーがフォームを送信すると、何も起こりません。フォームが有効だと思われますが、データベースは更新されません。

def createcourse(request): 
    if request.method=='POST': 
     form = KursForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/polls/usersite') 
    else: 
     form = KursForm() 

    return render(request, 'polls/createcourse.html', {"form" : form}) 

とcreatecourse.html中:私のviews.pyで

class KursForm(ModelForm): 
    class Meta: 
     model = Kurs 
     fields = "__all__"  

:私のforms.pyで

from tinymce.models import HTMLField 

class Kurs(models.Model): 
    [skipping...] 
    opis = HTMLField() 
    [skipping the rest] 

:私のmodels.pyで

<head>{{ form.media }}</head> 

<form action="" method="post"> 
{% csrf_token %} 
{{ form }} 
<input type="submit" value="Submit" /> 
</form> 

[送信]をクリックすると、観察可能な効果はありません。 TextFieldをHTMLFieldに変更するまで、すべてが正常に機能しました。私は間違って何をしていますか?

編集:そこにTinyMCEを約上げsimilar issueがあるが、私は私の場合には

class KursForm(ModelForm): 
    opis = forms.CharField(widget=TinyMCE(attrs={'required': False, 'cols': 30, 'rows': 10})) 
    class Meta: 
     model = Kurs 
     fields = "__all__"  

にforms.pyでフォームを編集することを報告したい助けにはならなかったようです。

答えて

2

まあ、これは確かにTinyMCEの問題です。 ClaudePは親切で、thisスレッドで私を助けてくれました。 - ウィジェットのサブクラス化

:私は今持っているとどのような仕事をしていることは、次のされているもの、要するに

class TinyMCEWidget(TinyMCE): 
    def use_required_attribute(self, *args): 
     return False 

を - 次のものにフォームを修正した(私はこれがあるかもしれないと思いますオプション):

class KursForm(ModelForm): 
    opis = forms.CharField(widget=TinyMCEWidget(attrs={'required': False, 'cols': 30, 'rows': 10})) 
    class Meta: 
     model = Kurs 
    fields = "__all__" 
関連する問題