Django将字符转换为整数查询

Django将字符转换为整数查询,django,postgresql,Django,Postgresql,我有一个与以下模型类似的简单模型: class ServiceIncoice(MyCustomRegistrationModel): (...) number = models.CharField(max_length=60) (...) 字段号通常包含整数值。用户可能只想使用数字或字母数字代码 问题是,当用户想要创建新的ServiceInvoice实例时,我需要获取字段号的最后一个值,然后将1添加到最后一个值。例如: Id=1,编号=13 Id=2,数字=2 Id=3

我有一个与以下模型类似的简单模型:

class ServiceIncoice(MyCustomRegistrationModel):
    (...)
    number = models.CharField(max_length=60)
    (...)
字段号通常包含整数值。用户可能只想使用数字或字母数字代码

问题是,当用户想要创建新的ServiceInvoice实例时,我需要获取字段号的最后一个值,然后将1添加到最后一个值。例如:

  • Id=1,编号=13
  • Id=2,数字=2
  • Id=3,编号=16
  • 下一项的Id应为4,编号应为17。但是当我执行

    ServiceInvoice.objects.all().latest('number')
    
    它返回2,这不是我想要的。我试过了,也试过了。他们中的任何人都为我工作,因为我需要任何给定服务发票的最高编号


    提前感谢。

    根据django文档

    Latest按日期返回表中最新的对象,使用提供的字段\ u名称作为日期字段

    你能行

    qs = ServiceInvoice.objects.all().order_by('-number')[:1]
    

    根据django文件

    Latest按日期返回表中最新的对象,使用提供的字段\ u名称作为日期字段

    你能行

    qs = ServiceInvoice.objects.all().order_by('-number')[:1]
    
    只要您在额外调用中更新强制转换以用于数据库实现,您引用的方法就应该有效。对于postgresql,这应该如下所示:

    ServiceInvoice.objects.extra(
        {'number_as_int': "number::INTEGER"}
    ).latest('number_as_int')
    
    只要您在额外调用中更新强制转换以用于数据库实现,您引用的方法就应该有效。对于postgresql,这应该如下所示:

    ServiceInvoice.objects.extra(
        {'number_as_int': "number::INTEGER"}
    ).latest('number_as_int')
    

    我在Rizwan尝试了你的解决方案,但结果是一样的。我想我需要将数字转换为整数,因为它存储为char字段(number=models.CharField)。在char字段中,顺序类似于1、11、111、…、2、21、211等等。谢谢。我在Rizwan尝试了你的解决方案,但结果是一样的。我想我需要将数字转换为整数,因为它存储为char字段(number=models.CharField)。在char字段中,顺序类似于1、11、111、…、2、21、211等等。谢谢你,谢谢你给我指出了正确的方向。第一个解决方案就是我需要的。嗨@meshantz,我很高兴能帮助你。你能认为它是有用的答案吗?干杯。我投票赞成这个问题。您尚未选择首选答案,也无法投票支持您自己的答案:)谢谢您为我指明了正确的方向。第一个解决方案就是我需要的。嗨@meshantz,我很高兴能帮助你。你能认为它是有用的答案吗?干杯。我投票赞成这个问题。您尚未选择首选答案,并且您不能为自己的答案投票:)