1

モデル「Post」と「Image」を次のように使用して、ブログを作成しています。

class Post(models.Model):
    title = models.CharField(max_length=1000)
    author = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    text = models.TextField(max_length=10000)

class Image(models.Model):
    post = models.ForeignKey(Post, related_name='images')
    image = models.ImageField(upload_to='photos/%Y/%m/%d')
    caption = models.CharField(max_length=1000,blank=True)

以下の例に従って、管理サイトに Dojo リッチ・エディターを実装しようとしています。

http://lazutkin.com/blog/2011/mar/13/using-dojo-rich-editor-djangos-admin/

ただし、admin.py ファイルの設定間に何らかの干渉があり、「投稿」のインスタンスに関連付けられた画像をアップロードするためのリッチ エディターと ModelAdmin クラスの両方を登録できません。admin.py ファイルで次のコードを使用すると:

from django.contrib.admin import site, ModelAdmin
import models

class CommonMedia:
    js = (
      'https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js',
      'editor.js',
    )
    css = {
      'all': ('editor.css',),
    }

site.register(models.Post,
    Media = CommonMedia,
)

リッチ テキスト エディターは正常に表示されます。しかし、次のように、画像アップロード フィールドのコードを追加すると、次のようになります。

from blogs.models import Post,Image
from django.contrib import admin
from django.contrib.admin import site, ModelAdmin
import models


class CommonMedia:
  js = (
    'https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js',
    'editor.js',
  )
  css = {
    'all': ('editor.css',),
  }

class PostImageInline(admin.TabularInline):
    model = Image
    extra = 5

class PostAdmin(admin.ModelAdmin):
    inlines = [PostImageInline]

site.register(models.Post,
    list_display = ('text',),
    search_fields = ['text',],
    Media = CommonMedia,
)

admin.site.unregister(Post)

admin.site.register(Post, PostAdmin)

リッチ エディターは表示されません。これは「admin.site.unregister(Post)」行が原因だと推測していますが、それを使用しないと「The model Post is already registered.」というエラーが表示されます。代わりに、「admin.site.register(Post, PostAdmin)」からその行と「Post」の両方を削除すると、「'MediaDefiningClass' object is not iterable」というエラーが発生します。PostAdmin とリッチ エディタの両方を同じページに表示できるように、これを解決する方法を知っている人はいますか?

4

1 に答える 1

2

/home/guillaume/mysite/blogs/static/editor.jsは正しくありません。ここに URL を指定する必要があります。おそらく、/static/editor.js

また、chrome/safari の場合は Web インスペクターを使用し、firefox の場合は firebug を使用して、コンソールでいくつかのエラーをキャッチします。

于 2012-05-02T04:32:19.687 に答える