В Django Admin, как у вас есть каскадный InlineModelAdmin - PullRequest
0 голосов
/ 28 апреля 2011

Привет, у меня есть список ресторанов (например, McDonalds и т. Д.), С меню (например, меню обеда, меню ужина), подменю (например, закуски, сэндвичи и т. Д.) И блюдами (Angus Burger, Chicken Burger и т. Д.)

Все они связаны внешними ключами.

Есть ли способ, чтобы в админке ресторана у меня было Меню в виде табличной строки со ссылкой для редактирования этого меню (вэто собственная страница администратора, а не встроенная), так что там я могу отобразить подменю, встроенное в меню администратора.Каждое подменю имеет ссылку для редактирования этого элемента подменю (на своей странице администратора, а не в строке), чтобы там можно было отображать блюда в строке.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

Итак, вы хотите добавить поле к MenuInline, которое ссылается на change_form каждого меню?

Это можно сделать с помощью полей read_only.

Сначала я бы добавил метод к вашей модели меню, который создает ссылку на change_form модели в админке.См. Обратные URL-адреса администратора для некоторых указателей.

В итоге вы должны получить нечто похожее на это:

def get_menu_admin_page(self):
    from django.core.urlresolvers import reverse
    return '<a href="%s">%s</a>' % (reverse('admin:yourapp_menu_change',
                                             args=(self.pk,)), self.menu_title)

get_menu_admin_page.allow_tags = True 

Теперь вы можете добавить этот метод к вашему InlineAdmin.

class MenuInline(admin.TabularInline):
    model = Menu
    fields = ('menu_title', 'get_menu_admin_page')
    readonly_fields = ('get_menu_admin_page',)

Теперь ваш TabularInline должен содержать ссылку на change_view для каждого отдельного меню.

0 голосов
/ 28 апреля 2011

Если вы просто хотите добавить некоторые ссылки, например, в представлении «Изменение ресторана», вам не нужно использовать встроенную строку, поскольку это предоставляет форму для изменения данных.Я бы, вероятно, переопределил change_view в RestaurantAdmin, чтобы получить список связанных меню и передать его как extra_context.А затем переопределите специфичный для модели шаблон change_form.html, чтобы отобразить ссылки меню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...