如何添加排序的字段长度Model?
我有一个IPv4Manage模型:
class IPv4Manage(models.Model):
"""
ipv4
"""
ip = models.GenericIPAddressField(help_text="ip")
...
class Meta:
ordering = ['ip']
在Meta中,我们可以使用字段设置排序条件。
但是我有一个问题,我可以在中设置ip订单的长度Model吗?
我知道是否可以在APIView中使用Prefetch或extra来指定的长度ip并对其进行排序。
...extra(select={'length':'Length(ip)'}).order_by('length', 'ip')
但是我们可以在中设置顺序参数的长度Model吗?
编辑1
我创建了一个经理:
class IPv4ManageManager(models.Manager):
def get_queryset(self):
return super().get_queryset().annotate(length=Length('ip')).order_by('length', 'ip')
我将其添加到默认的Manager中,对我有用。
class IPv4Manage(models.Model):
"""
ipv4
"""
ip = models.GenericIPAddressField(help_text="ip")
...
objects = IPv4ManageManager()
class Meta:
ordering = ['ip']
相关分类