如何在方法中使用admin_order_field,它具有相反的关系?
是否可以使用一些聚合查询集功能?
class Card(models.Model):
serial_number = models.CharField(max_length=200)
...
class License(models.Model):
expiration = models.DateTimeField('Expiration')
card = models.ForeignKey('Card')
...
class Pc(models.Model):
card = models.ForeignKey('Card')
...
class PcAdmin(admin.ModelAdmin):
...
def expiration(self, obj):
try:
license = License.objects.get(card=obj.card, type="xxx")
expiration = license.expiration
except (License.DoesNotExist, TypeError):
expiration = "N/A"
return expiration
expiration.short_description = _("Expiration")
expiration.admin_order_field = ???
答案 0 :(得分:3)
基本上,如果您可以按照字段的方式引用某些内容,则可以在admin_order_field
中使用它。
因此,如果您想按Card's
serial_number
订购,可以说`admin_order_field ='card__serial_number'。
或者,如果您想使用注释,您可以通过首先定义创建注释的get_queryset()
方法来实现;然后使用新的注释名称作为admin_order_field
。
但在你的情况下,你不能这样做。问题是对type="xxx"
的限制;使用字段表示法无法表示该逻辑。
但是,可以使用extra()
来定义包含所需信息的自定义字段,然后将其用作admin_order_field
。