2

私はカスタム フォーム アプリケーションを使用しており、ckeditor をそれに統合したいと考えています。Django Admin フォームでは問題なく動作しますが、通常のフォームでは動作しません。

models.py

from django.db import models
from django.contrib.auth.models import User
from ckeditor.fields import RichTextField

class Post(models.Model):
    text = RichTextField()

    updated = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['created']

    def __unicode__(self):
         return self.text

urls.py

from django.conf.urls import patterns, url

urlpatterns = patterns(
    'editor.views',
    url(r'^$', 'home'),
    url(r'^create_post/$', 'create_post'),
    url(r'^delete_post/$', 'delete_post'),
)

ビュー.py

def home(req):

    tmpl_vars = {
        'all_posts': Post.objects.reverse(),
        'form': PostForm()
    }
    return render(req, 'editor/index.html', tmpl_vars)

def create_post(request):
    if request.method == 'POST':
        post_text = request.POST.get('the_post')
        response_data = {}
        post = Post(text=post_text, author=request.user)
        post.save()
        post_form = Post()

        response_data['result'] = 'Create post successful!'
        response_data['postpk'] = post.pk
        response_data['text'] = post.text
        response_data['created'] = post.created.strftime('%B %d, %Y %I:%M %p')

        return HttpResponse(
            json.dumps(response_data),
            content_type="application/json"
        )

    else:
        return HttpResponse(
            json.dumps({"nothing to see": "this isn't happening"}),
            content_type="application/json"
        )

フォーム.py

class PostForm(forms.ModelForm):
    text = forms.CharField(widget = CKEditorWidget())
    class Meta:
        model = Post

index.html

<form method="POST" id="post-form">
        {% csrf_token %}
        <div id="the_post">
            {{ form.media }}
            {{ form.as_p }}
        </div>
        <div id="results"></div>
        <button type="submit">{% trans 'Submit' %}</button>
 </form>

django 管理者データは ckeditor で保存されますが、カスタム フォーム データで ckeditor を使用してもデータベースには保存されません。助けてください。

4

2 に答える 2

1

あなたのRichTextFieldフィールドは呼び出されるtextので、postデータをチェックするときは、「テキスト」入力をチェックする必要があります。

post_text = request.POST.get('text', '')

また、次のようにフォームを処理します。

if request.method == 'POST':
    # Bind data from request.POST into a PostForm
    form = PostForm(request.POST)
    # If data is valid, proceeds to create a new post
    if form.is_valid():
        post = form.save(commit=False)
        post.author = request.user
        post.save()

        response = {
            'msg': 'Create post successful!'
            'id': post.pk,
            'text': post.text,
            'created': post.created.strftime('%B %d, %Y %I:%M %p')
        }

現在のユーザーをとして保存することについてauthor。モデルからフィールドを除外します。ビューで を更新authorします。

class PostForm(forms.ModelForm):
    [...]

    class Meta:
        model = Post
        exclude = ('author',)
于 2015-03-08T23:46:20.257 に答える