2012-06-12 3 views
1

Я запускаю набор киосков, каждый из которых отображает содержимое из моего приложения Django. Каждый киоск пишет URL-адрес, например, myurl.com/location=downtown каждую минуту, чтобы узнать, есть ли какие-либо обновления.Добавление «статуса свет» в администратор Django

My models.py выглядит примерно так. Каждый раз, когда модель пингована, обновляется last_updated.

class Location(models.Model): 
    name = models.CharField(max_length=20) 
    last_update = models.DateTimeField() 

К сожалению, каждый раз браузер в киоске падает. То, что я хочу сделать, это добавить к интерфейсу администратора после входа в систему, немного зеленого или красного цвета, чтобы указать, прошло ли это более 5 минут с момента обновления одного из местоположений.

Это лучший способ сделать сердечный ритм для приложения? Как изменить интерфейс администратора, чтобы дать мне индикаторы состояния, чтобы узнать, хорошо ли в киосках?

ответ

3

К сожалению, я переписал следующее, прежде чем перечитывать вопрос. Итак, если вы хотите иметь собственный столбец на дисплее списка для Location, выполните следующие действия. В противном случае посмотрите на ответ @ jpic.

-

Да, вы можете определить пользовательские администратора столбцов с методом на ModelAdmin так:

import datetime 
from django.contrib import admin 
from my_app.models import Location 

class LocationAdmin(admin.ModelAdmin): 
    list_display = ('name', 'slug', 'custom_column',) 

    # define the row x column value here 
    def custom_column(self, obj): 
     if obj.last_updated < datetime.datetime.now() - datetime.timedelta(minutes=5): 
      retval = ('red.jpg', 'This location checked in more than 5 minutes') 
     else 
      retval = ('green.jpg', 'This location checked in less than 5 minutes ago') 
     return "<img src='%s' alt='%s' />" % retval 

    # set the column heading here 
    custom_column.short_description = 'Status' 

# don't forget to register the newly sub-classed ModelAdmin 
admin.site.register(Location, LocationAdmin) 

Обычай метод также может быть атрибутом самой модели. Для получения дополнительной информации см. admin docs.

0

Прошло некоторое время с тех пор, как я работал в Django, поэтому я не могу помочь вам с кодом. Но ваша проблема кажется, что в Django должно быть легко.

Интерфейс администратора является своего рода волшебным, и я не думаю, что вы должны попытаться взломать его, чтобы добавить свет состояния. (Возможно, они изменили ситуацию, так как я посмотрел на Django и, возможно, сейчас это не так волшебно?)

Но должно быть очень просто создать новую страницу, отображающую статус, и сделать страницу доступной только администратору , Вы можете получить плагин для Firefox или Chrome, который автоматически обновляет страницу, что заставляет Django повторно запускать запросы и перестраивать страницу. Затем просто оставьте эту страницу открытой и обновленной, когда вы делаете админ-файл в интерфейсе администратора.

+0

Обновление страницы может быть раздражающим, если пользователь в настоящее время читает список редактирования модели в форме ... – jpic

+0

Я предлагаю автообновление только на определенной странице со своим собственным URL-адресом, который показывает только статус Информация. Страница только для чтения, а не часть интерфейса администратора. – steveha

2
  1. Make a custom template tag, который отображает свет, если киоск был обновлен

  2. Override the admin base template, то есть. копия django/contrib/admin/templates/admin/base_site.html в your_project/templates/admin/base_site.html

  3. Добавить тег шаблона в админ базового шаблона вы скопировали

Это какой-то работы, но, надеюсь, все, что вам нужно, это документально.

Смежные вопросы