2
管理者ページでランタイム計算フィールドを使用しようとしています。これは正常に動作しますが、私はそのフィールドに基づいてソートを許可したいと思います。 Django 1.5(dev)を使って、これは可能ですか?私はウェブを掃除してきたが、それがであることを示すものが見つからない。が可能である。管理者の計算フィールドの使用
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'が失敗しているからです。 –
@DemianBrechtマネージャを使うのではなく、' created_on'を返すクラスに別のインスタンスメソッドを追加するだけです – agf
Django 1.6以来、 'get_query_set 'メソッドの名前が' get_queryset'に変更されました –