Я гуглил и просматривал документы, но не нашел ничего, связанного с этим сценарием:
У меня есть модель master/detail, определенная так:
class Master(models.Model):
title = models.CharField(max_length=100)
def details_url(self):
return '<a href="here comes the url linking to details">Details</a>'
details_url.short_description = 'Link to details'
details_url.allow_tags = True
class Detail(models.Model):
master = models.ForeignKey(Master)
details = models.TextField()
Они отображаются в админке с помощью admin.py. Мой вопрос таков:
1) Как я могу сделать свойство details_url в мастер-модели, чтобы при отображении в admin.py пользователь мог щелкнуть его и перейти к списку деталей и увидеть только детали, относящиеся к этому экземпляру мастер-модели?
2) Если это можно сделать только с помощью пользовательского представления, как мне заставить представление создавать страницу, похожую на остальную часть администратора? Я знаю, что могу использовать тот же код шаблона, что и администратор, но есть ли более быстрый способ создать, например, списки, такие как детали в моем случае? Общие представления/классы?
3) Добавление Мастера в list_filter для класса detailsAdmin невозможно из-за количества Мастер-записей. Либо это ...? И даже если бы это было возможно, как я могу установить фильтры с другой страницы, например, если я щелкну ссылку в списке изменений для основной модели, переходящей в список изменений Детали, как я могу настроить фильтрацию для конкретного экземпляра Мастер-модель?
Короче; все, что я хочу, это отфильтровать change_list, чтобы отображать только детали, относящиеся к конкретной основной записи, и повторно использовать как можно больше административного кода/базы функций.