【发布时间】:2020-08-29 15:29:42
【问题描述】:
在我的 Django 应用程序中,我创建了一个模型,其 id(主键)为长度为 6 的 CharField。我正在使用一个自定义验证器,它只允许用户输入整数。如果输入小于字段定义中指定的“六”字符长度,有没有办法在输入之前添加零。
例如,用户在主键字段中输入值 1234。现在我希望在保存时 pk 字段值应保存为 001234。
我尝试在save 执行此操作,但正在创建两条记录,一条由用户输入,另一条添加了零。
这是否有可能实现我想要做的事情?
编辑
这就是我正在做的事情(虽然对我来说似乎相当低技术):
class Plant(models.Model):
plant_id = models.CharField(primary_key=True,..,)
plant_name = models.CharField(max_length=55, verbose_name="Plant/W.Area")
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
if len(self.plant_id) == 4:
ramp_up_obj_id = '00' + str(self.plant_id)
self.plant_id = str(ramp_up_obj_id)
super().save(*args, **kwargs)
保存的结果是(如上所述):对于输入的值1001,创建了两条记录。一个为 1001,另一个为 001001。
【问题讨论】:
-
您能在问题中包含您的代码吗?可能你已经接近你需要做的事情了——听起来应该是可能的——但你的代码中可能存在人们可以帮助你修复的错误。
标签: django django-models primary-key