2012-06-12 2 views
1

각 Django 앱의 콘텐츠를 표시하는 키오스크 세트를 실행하고 있습니다. 각 키오스크는 매분 myurl.com/location=downtown과 같은 URL을 핑 (ping)하여 업데이트가 있는지 확인합니다.Django 관리자에게 "상태 표시 등"추가

내 models.py는 다음과 유사합니다. 모델이 ping 될 때마다 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에서 쉬워야하는 것처럼 보입니다.

관리 인터페이스는 일종의 마법이며 상태 표시등을 추가하기 위해 해킹하려고해서는 안됩니다. (내가 장고를 보았을 때부터 장고를 보았을 때 상황이 바뀌었을 가능성이있다.)

그러나 상태를 보여주는 새로운 페이지를 만들고 관리인 만 페이지를 사용할 수 있도록해야한다. . 페이지를 자동 새로 고치는 Firefox 또는 Chrome 용 플러그인을 얻을 수 있습니다. 그러면 Django가 쿼리를 다시 실행하고 페이지를 다시 빌드하게됩니다. 그런 다음 관리 인터페이스에서 관리 작업을하는 동안 해당 페이지를 열어 놓고 새로 고치십시오. 키오스크는 즉,

  • Override the admin base template

    업데이트 된 경우 빛을 표시

  • +0

    사용자가 현재 양식의 모델 편집 목록을 읽는 중 페이지 자동 새로 고치기가 성가신 일이 있습니다. – jpic

    +0

    상태 만 표시하는 고유 한 페이지가있는 특정 페이지에서만 자동 새로 고침을 제안했습니다. 정보. 관리 인터페이스의 일부가 아닌 읽기 전용 페이지. – steveha

    2
    1. Make a custom template tag. django/contrib/admin/templates/admin/base_site.html

    2. your_project/templates/admin/base_site.html에 당신이

    을 복사 한 관리 기본 템플릿에서 템플릿 태그
    추가 복사하는 것은 몇 가지 작업을하지만, 당신이 필요로하는 잘하면 모든 것이 설명되어 있습니다.