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