gpt4 book ai didi

django - 如何设置Django中最高值的排序字段+1的默认值

转载 作者:行者123 更新时间:2023-12-04 15:14:00 30 4
gpt4 key购买 nike

提前致谢。
我在 Django 中创建了一个模型,其中有一个标题、url 和一个排序字段。现在我已将该订购字段的默认值设置为 ZERO .我的要求是这个默认值应该更改为 current highest Ordering number + 1 .
我可以在管理界面中做到这一点吗?

class FooterLinks(models.Model):
title = models.CharField(_("Title"), max_length=200, null = True, blank = True)
link = models.CharField(_("Link"), max_length = 200)
order = models.IntegerField(_("Sort Order"), default=0)

最佳答案

受到 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)

关于django - 如何设置Django中最高值的排序字段+1的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12128862/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com