Отображение данных внешнего ключа на странице изменения / добавления администратора Django

#python #django #django-models #django-admin

#python #django #django-модели #django-admin

Вопрос:

Я пытаюсь заставить атрибут модели отображаться на странице изменения / добавления администратора Django другой модели. Вот мои модели:

 class Download(model.Model):
    task = models.ForeignKey('Task')

class Task(model.Model):
    added_at = models.DateTimeField(...)
  

Не удается переключить внешний ключ, поэтому я не могу использовать встроенные строки, и, конечно, fields = ('task__added_at',) здесь тоже не работает.

Каков стандартный подход к чему-то подобному? (или я слишком затягиваю администрирование?)

Я уже использую пользовательский шаблон, так что, если это ответ, который можно сделать. Однако я бы предпочел сделать это на уровне администратора.

Комментарии:

1. Не могли бы вы, пожалуйста, подробнее рассказать о рабочем процессе, которого вы пытаетесь достичь в admin? Из вашего сообщения звучит так, как будто вы редактируете загрузку и вам нужен доступ к модели задачи, это верно?

2. Пользователь запрашивает загрузку, которая генерируется и отправляется им по электронной почте отложенной задачей (я на Windows, поэтому нет celeryd, жаль больше)

3. Хорошо, итак, что вам нужно сделать с полем внешнего ключа?

4. отображение Download.task.added_at

5. @BrianHicks вы смогли это осуществить?

Ответ №1:

Если вам не нужно его редактировать, вы можете отобразить его как поле, доступное только для чтения:

 class DownloadAdmin(admin.ModelAdmin):
    readonly_fields = ('task_added_at',)

    def task_added_at(self, obj):
        return obj.task.added_at
  

Комментарии:

1. Это не сработает, поскольку readonly_fields должно быть подмножеством полей, и я не могу добавлять функции к полям.

2. Я не знаю, что вы имеете в виду. Это действительно работает — смотрите документацию .

3. Также работает с наборами полей. Слава.