在 Django 的 Model 中 如何实现 字符串+数字 的字段自增
时间: 2024-02-28 10:52:50 浏览: 151
在 Django 的 Model 中实现字符串+数字的字段自增可以通过重写 save 方法实现,具体步骤如下:
1. 在 Model 中定义需要自增的字段,例如:
```python
class MyModel(models.Model):
code = models.CharField(max_length=20)
number = models.IntegerField(default=0)
```
2. 重写 Model 的 save 方法,在 save 方法中判断是否需要自增,例如:
```python
class MyModel(models.Model):
code = models.CharField(max_length=20)
number = models.IntegerField(default=0)
def save(self, *args, **kwargs):
if not self.pk: # 如果是新建对象
max_number = MyModel.objects.all().aggregate(Max('number'))['number__max'] or 0 # 获取当前最大的 number 值
self.number = max_number + 1 # 自增
self.code = 'ABC' + str(self.number) # 拼接字符串
super().save(*args, **kwargs)
```
上述代码中,首先判断是否是新建对象,如果是,则获取当前最大的 number 值,然后将其加 1 赋值给新建对象的 number 字段,并将 'ABC' 和 number 字段的值拼接作为 code 字段的值,最后调用父类的 save 方法保存数据。
这样,每次创建新对象时,number 字段就会自动加 1,并且 code 字段会以 'ABC' 为前缀自动拼接。
阅读全文