3

我正在编写一个用于会计的小软件。一个功能是创建账单。这些账单有一个序列号,应该随着每张账单增加。但有时我需要在这个系统之外创建一个,所以我需要能够更改值。因此,我正在寻找一种在 Django admin 中使用默认值的整数字段的方法,该默认值始终为最大值 + 1,但可编辑。不幸的是,我不知道从哪里开始。我怎样才能做到这一点?

4

2 回答 2

4

您可以使用函数或 lambda 表达式作为默认值:

class Bill(models.Model):
    serial = models.IntegerField(default=lambda: Bill.objects.latest('id').serial + 1)
    # ...

基本上,获取最新型号,并使用其序列号(加一)作为默认值。如果您的序列号是整数,这将起作用,否则您将不得不使用自己的逻辑。另请注意,如果您在数据库中没有任何账单, .latest()将引发 DoesNotExist 。

于 2013-08-30T21:51:46.083 回答
1

您始终可以AutoField为此使用 an 。如该链接所示,数据库会自动为您增加它,但您仍然可以明确设置自己的。

请参阅下面几行称为“显式指定自动主键值”的部分。

于 2013-08-30T22:21:14.037 回答