猿问

如何在模型中添加字段的长度以进行排序?

如何添加排序的字段长度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']


大话西游666
浏览 161回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答