#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. Также работает с наборами полей. Слава.