为Django中的Model Field生成随机字符串



我正在使用DRF,并有几个模型,我想从ID中生成唯一的数字。例如,一个型号的编号是PRJ023400,另一个型号的编号是TSK2949392。

我创建了一个实用函数来生成随机数和作为字段,并试图使用这个函数作为默认值。

number = models.CharField(max_length = 10,
blank=True,
editable=False,
default='PRJ'+create_new_ref_number())

我面临的问题是,这只会在运行迁移时生成一个新的字符串。实现这一目标的最佳方法是什么?

干杯!

default可以接受一个函数。根据文档:

字段的默认值。它可以是一个值或一个可调用对象对象。如果可调用,它将在每次新对象被调用时被调用创建。

考虑到所有这些,您可以将其设置为如下函数:

def number_default_function():
return 'PRJ' + create_new_ref_number()
class YourModel(models.Model):
number = models.CharField(
max_length = 10,
blank=True,
editable=False,
default=number_default_function
)

我其实是可以算出来的。

对于model字段,我将其更改为:
number = models.CharField(max_length = 10,
blank=True,
null=True,
editable=False)

在保存时,我添加了这个函数来每次生成一个新字符串:

def save(self, *args, **kwargs):
self.number = 'PRJ' + create_new_ref_number()
super(Project, self).save(*args, **kwargs)

希望这能帮助到其他人。

欢呼。

最新更新