0

そのため、ブログ アプリケーションに Djangos の組み込みコメント アプリ (django.contrib.comments) を使用しています。フォームの表示などにいくつかの変更を加えました (ドキュメントに記載されているとおり)。最後に気になるのは、次のように、コメント モデルが管理者の独自のカテゴリにあることです。

MyApp
---Model1
---Modle2

コメント
---コメント

コメントは MyApp モデルに関連付けられているため、このようにしたいと考えています。

MyApp
---Model1
---Modle2
---コメント

このコード行を MyApps admin.py に追加してこれを達成しようとしました (Comment クラスを上書きします)。

class MyAppComment(Comment):

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

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

そして、これは機能します (そしてコメントモデルは MyApps の下に表示されます) が、リンクが間違っています...モデルは次を指しています:

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

エラーを出力します:

そのようなテーブルはありません: myapp_myappcomment

それ以外の:

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

これは、管理者がアプリ名とモデル名に従って URL を形成するためです...どうすれば管理者のコメント モデルの位置を変更し、URL をそのままにしておくことができますか?

何か方法があるはずですよね?

4

1 に答える 1

0

クラスを「上書き」していません。Commentサブクラス化することで、複数テーブルの継承を使用して実際に子モデルを作成しました。このため、別のテーブルを作成する必要があります。

クラスから継承するプロキシ モデルを作成できればComment、追加のテーブルを作成する必要はありません。

class MyAppComment(Comment):

    class Meta(Comment.Meta):
        proxy = True

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

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

于 2011-12-17T23:34:04.080 に答える