我有这个查询给我DB的下一个可用密钥。它工作得很好,直到达到10,当它不是
时会说10可用max_var = ShortUrl.objects.filter(is_custom=False).aggregate(max=Cast(Coalesce(Max('key'), 0),BigIntegerField()))['max'] + 1
该列是CharField。
有关如何解决此问题的任何提示?
答案 0 :(得分:0)
您需要先注释(将字符串强制转换为int)。然后,您可以找到投放价值的汇总。即:
from django.db.models import BigIntegerField
from django.db.models.functions import Cast
from django.db.models import Max
max_var = ShortUrl.objects.filter(is_custom=False) \
.annotate(key_int = Cast('key', output_field=BigIntegerField())) \
.aggregate(max=Max('key_int'))['max'] or 0
max_var+=1