2
我试图在我的管理页面中使用运行时计算字段。这工作正常,但我想允许基于该字段排序。使用Django 1.5(dev),这可能吗?我一直在搜索interweb,但无法找到任何指示它是的可能。在管理中使用计算字段
class Guest(models.Model)
email = models.CharField(max_length=255)
class Invitation(models.Model)
guest = models.ForeignKey(Guest)
created_on = models.DateTimeField(auto_now_add=True)
class GuestAdmin(admin.ModelAdmin):
list_display = ["email", "latest_invitation_sent_on",]
def latest_invitation_sent_on(self, o):
try:
return o.invitation_set.all().order_by(
"-created_on")[0].created_on.strftime("%B %d, %Y")
except IndexError:
return "N/A"
我希望能够通过latest_invitation_sent_on
排序。有没有办法很好地做到这一点,我不知道?
使用你的代码的第一块,我得到'GuestAdmin.list_display [4],“latest_invite”不是一个可调用或“GuestAdmin”的属性或模型“Guest'.'找到。这很奇怪,因为如果我在admin类的queryset方法中插入一个'print o.latest_invite',它会打印正常。由于某种原因,尽管'list_display'失败.. – 2012-04-15 16:45:07
@DemianBrecht而不是使用管理器只是添加另一个实例方法的类,它返回它的'created_on' – agf 2012-04-15 18:58:43
未来的读者注意到:自从Django 1.6,'get_query_set '方法已被重命名为'get_queryset' – 2016-06-16 02:05:50