Пользовательский джанго комментарии админ слот - PullRequest
0 голосов
/ 17 декабря 2011

Так что я использую встроенное приложение комментариев 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-адреса такими, как они есть?

Должен быть какой-то способ сделать это?

1 Ответ

0 голосов
/ 18 декабря 2011

Вы не «перезаписали» класс Comment - подклассифицировав его, вы фактически создали дочернюю модель, используя наследование нескольких таблиц . Вот почему нужно создать еще одну таблицу.

Вы можете создать модель прокси , которая наследуется от класса Comment, тогда дополнительные таблицы создавать не нужно.

class MyAppComment(Comment):

    class Meta(Comment.Meta):
        proxy = True

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

Вам не нужно устанавливать app_label, если в приложении myapp определено MyAppComment - оно будет установлено автоматически.

...