2

それぞれが Django アプリのコンテンツを表示する一連のキオスクを実行しています。各キオスクはmyurl.com/location=downtown毎分ごとに URL に ping を送信し、更新があるかどうかを確認します。

私のmodels.pyは次のようになります。モデルが ping されるたびに、last_updated が更新されます。

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

残念ながら、キオスクのブラウザがクラッシュすることがよくあります。私がやろうとしているのは、管理インターフェイスの前面に、ログイン後に、場所の 1 つが更新されてから 5 分以上経過したかどうかを示す小さな緑色または赤色のライトを追加することです。

これは、アプリケーションのハートビートを作成するための最良の方法ですか? キオスクが正常かどうかを確認するためにステータス ライトを表示するように管理インターフェイスを変更するにはどうすればよいですか?

4

3 に答える 3

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)

カスタム メソッドは、モデル自体の属性にすることもできます。詳細については、管理者向けドキュメントを参照してください。

于 2012-06-12T21:37:49.923 に答える
2
  1. キオスクが更新された場合にライトを表示するカスタム テンプレート タグを作成する

  2. admin base templateをオーバーライドします。django/contrib/admin/templates/admin/base_site.htmlにコピーyour_project/templates/admin/base_site.html

  3. コピーした管理ベース テンプレートにテンプレート タグを追加します。

これは多少の作業ですが、必要なものがすべて文書化されていることを願っています。

于 2012-06-12T02:27:27.777 に答える
0

私が Django で作業してからしばらく経っているので、コードについてはお手伝いできません。しかし、あなたの問題は Django では簡単なはずです。

管理インターフェイスは一種の魔法のようなものであり、ステータス ライトを追加するためにハッキングしようとする必要はないと思います。(私が Django を見て以来、彼らが物事を変えた可能性はありますが、今はそれほど魔法的ではないのでしょうか?)

しかし、ステータスを表示する新しいページを作成し、そのページを管理者だけが利用できるようにするのは非常に簡単なはずです。ページを自動更新する Firefox または Chrome 用のプラグインを入手できます。これにより、Django はクエリを再実行し、ページを再構築します。次に、管理インターフェイスで管理作業を行っている間、そのページを開いて更新したままにします。

于 2012-06-12T02:06:50.157 に答える