受 Burhan 回答的启发,我能够解决我的一个问题,类似于你的问题。
所以对于你的问题:在我的models.py中创建可调用的get_new_default
from django.db.models import Max
def get_new_default():
new_order_default = FooterLinks.objects.all().aggregate(Max('order'))['order__max']+1
return new_order_default
class FooterLinks(models.Model):
order = models.CharField(_("Sort Order"), default = get_new_default)
这会将新的最大订单值粘贴到文本框中并保持该字段可编辑。
----!!编辑 !! - -
这引发了一个问题,在重置数据库时,因为没有对象可以计算最大值。修复方法是计算所有找到的对象,如果不存在,则默认设置为 1:
from django.db.models import Max
def get_new_default():
if FooterLinks.objects.all().count() == 0:
new_order_default = 1
else:
new_order_default = FooterLinks.objects.all().aggregate(Max('order'))['order__max']+1
return new_order_default
class FooterLinks(models.Model):
order = models.CharField(_("Sort Order"), default = get_new_default)