Nio*_*rko 2 django django-models django-admin django-queryset
如何在具有相反关系的方法中使用 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 = ???
Run Code Online (Sandbox Code Playgroud)
基本上,如果你可以用你做一个字段的方式来引用一些东西,你可以在admin_order_field.
因此,如果您想按顺序订购,Card's serial_number您可以说`admin_order_field = 'card__serial_number'。
或者,如果您想使用注解,您可以首先定义一个get_queryset()创建注解的方法;然后使用新的注释名称作为您的admin_order_field.
但在你的情况下,你不能这样做。问题是对 的限制type="xxx";无法使用字段表示法来表示该逻辑。
但是,可能可以使用extra()您想要的信息来定义自定义字段,然后将其用作您的admin_order_field.