0

管理インターフェイスでディスプレイをカスタマイズしようとしています。作成中の写真共有サイトに送信された名前と日付を表示するフィールドの 1 つが必要ですが、次のエラーが発生し続けます。

global name 'datetimeConvertToHumanReadable' is not defined

完全なトレースバックは次のとおりです: http://dpaste.com/822073/

私のコード

モデル:

class Design(models.Model):
    designer_id = models.ForeignKey(User)
    date_submitted = models.DateTimeField()
    title = models.CharField(max_length=70)
    description = models.TextField()
    photo = models.FileField(upload_to='design_photos')

    def image_thumb(self):
        return '<img src="/media/%s" width="100" height="100" />' % (self.photo)
    image_thumb.allow_tags = True

    def datetimeConvertToHumanReadable(dt):

        # convert passed datetime to timestamp
        dt_stamp = dt.strftime("%s")

        # convert current datetime to timestamp
        now = datetime.datetime.now()
        now_stamp = now.strftime("%s")

        # find difference between the two
        delta = int(now_stamp) - int(dt_stamp)

        # convert to (seconds ago, minutes ago, hours ago, etc...)
        if (delta < 60):
            return str(delta) + " seconds ago"
        elif (delta < 3600):
            return str(delta/60) + " minutes ago"
        elif (delta < 86400):
            return str(delta/3600) + " hours ago"
        elif (delta < 31536000):
            return str(delta/86400) + " days ago"
        else:
            return str(delta/31536000) + " years ago"

    def name_and_submitted(self):
        date_submitted = datetimeConvertToHumanReadable(date_submitted) 
        return '<div>%s<br />submitted %s ago</div>' % (self.designer_id, self.date_submitted)

    def __unicode__(self):
        return self.title

Admin.py:

class DesignAdmin(admin.ModelAdmin):

    list_display = ('image_thumb', 'title', 'description', 'name_and_submitted')

image_thumb メソッドはフィールドにサムネイルを表示するために正常に機能しますが、name_and_submitted メソッドはエラーをスローします。何か案は?

4

1 に答える 1

0

self引数を渡すだけです。それで問題は解決するはずです

def datetimeConvertToHumanReadable(self):
    dt = self.date_submitted
    # rest of your code goes here

問題は、引数を渡さない場合self、関数がクラスにアタッチされておらず、モデル オブジェクトを介して呼び出すことができないことです。list_admin_display は実際にモデル インスタンスにアクセスし、関数を呼び出します。あなたの場合、design_object.datetimeConvertToHumanReadabledesign_object が管理ページに表示される各モデル インスタンスのようなものになります。引数dtは引数として渡されないため、関数内で抽出する必要があります。

お役に立てれば

于 2012-11-01T11:21:41.193 に答える