Пользовательский админсайт Django не показывает ссылку на поле ForeignKey, доступное только для чтения
В стандартном Django Admin Site, если модель зарегистрирована с полями ForegingKey и эти поля включены в readonly_fields (с помощью свойства модели или метода get_readonly_fields), значение поля отображается со ссылкой на Change View, но это не работает на пользовательском Django Admin Site. Например: У меня есть две модели:
class ModelA(models.Model):
field_a = models.CharField(max_length=50)
class ModelB(models.Model):
model_a = models.ForeignKey(ModelA, on_delete=models.PROTECT)
Я зарегистрировался на стандартном сайте Django Admin Site:
admin.register(ModelA)
@register(ModelB)
class ModelBAdmin(admin.ModelAdmin):
model = ModelB
readonly_fields = ["model_a"]
Так я получаю в представлении изменений моделиB в админке значение поля (str модели) со ссылкой на представление изменений связанной модели:
Ссылка, указывающая на Chang View
Но если я регистрирую модели в Custom Admin Site, ссылка не генерируется.
Как я могу расширить свой пользовательский админский сайт, чтобы генерировать эти ссылки?
PD1: Я знаю, что могу написать пользовательские методы для создания ссылок, но это не DRY способ сделать это и не работает хорошо с методом get_readonly_fields
.PD2: Если я регистрирую связанную модель (ModelA в примере) на стандартном сайте администратора, ссылка генерируется, но указывает на стандартный сайт администратора, нарушая цель пользовательского сайта администратора.
Я разместил тот же вопрос на официальном форуме Django: forum.djangoproject.com/t/9472/5
Создал тикет из-за отсутствия строки в методе get_admin_url в вспомогательном классе AdminReadOnlyField, Временное решение находится в тикете: code.djangoproject.com/ticket/33077
PD: Почему кто-то отмечает этот пост как плохой вопрос? Он генерирует тикет для патча, так что это была справедливая проблема, это мой первый вопрос в StackOverflow и это обескураживает.