2011-12-17 17 views
0

私は私のブログアプリケーションにDjangosのビルトインコメントアプリ(django.contrib.comments)を使用しています。フォームの表示などをいくつか変更しました(ドキュメントに記載されています)。カスタムdjangoコメント管理スロット

MyApp
---Model1
---Modle2

Comments
---Comments

私はコメントがMyAppのモデルに結びついているので、それはこのようになりたい:私を悩ます最後に一つは、このように、コメントのモデルは、管理者にそれ自身のカテゴリーにあるということです。

MyApp
---Model1
---Modle2
---Comments

私は

class MyAppComment(Comment): 

    class Meta(Comment.Meta): 
     app_label = 'myapp' 

admin.site.unregister(Comment) 
admin.site.register(MyAppComment, CommentsAdmin) 

(Commentクラスを上書き)MyAppsのadmin.pyにこのコード行を追加することでこれを実現しようとしましたが、これは動作します(とコメントモデルがMyAppsの下に表示)が、

:エラーを出力

http://www.mysite.com/admin/myapp/myappcomment/

:今リンクがへのモデルのポイントは...間違っています管理者は、それがアプリ名やモデル名に応じたURLのフォームからである

http://www.mysite.com/admin/comments/comment/

...どのように私は管理者にコメントモデルの位置を変更するが、URLを残すことができる:

の代わりに、彼らはあるとして?

どうすればいいですか?

+0

あなたはmanage.py syncdbを実行していますか? – benjaoming

+0

ええと...(データベースを削除して最初から始めた)...同じエラー – Veles

答えて

0

Commentクラスを上書きしていない - サブクラス化することによって、実際にはmulti table inheritanceを使用して子モデルを作成しました。このため、別のテーブルを作成する必要があります。

Commentクラスを継承するproxy modelを作成すると、追加のテーブルを作成する必要がありません。

class MyAppComment(Comment): 

    class Meta(Comment.Meta): 
     proxy = True 

admin.site.unregister(Comment) 
admin.site.register(MyAppComment, CommentsAdmin) 

あなたはMyAppCommentmyappアプリで定義されている場合app_labelを設定する必要はありません - それは自動的に設定されます。

+0

偉大な作業...ありがとう! – Veles