我正在尝试将管理界面中的显示屏降价。我需要其中一个字段来显示我正在创建的照片共享网站提交的名称和日期,但我不断收到以下错误:
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方法会抛出错误。有什么想法吗?
答案 0 :(得分:0)
只需传递self
参数即可。那应该解决问题
def datetimeConvertToHumanReadable(self):
dt = self.date_submitted
# rest of your code goes here
问题在于,当您没有传递self
参数时,该函数不会附加到类,也不能通过模型对象调用。 list_admin_display实际访问模型实例并调用该函数。在您的情况下,它类似于design_object.datetimeConvertToHumanReadable
,其中design_object是管理页面中显示的每个模型实例。参数dt
不作为参数传递,因此您需要在函数中提取它。
希望这有帮助