我想覆盖模型上的保存方法以便生成唯一的第二个自动递增ID。重写保存方法在Django中创建第二个自动递增字段
创建我的类和重写保存()方法,但由于某种原因,它示数出来,出现以下错误:
TypeError: %d format: a number is required, not NoneType
下面的代码:
class Person(models.Model):
target = models.OneToOneField(Target)
person = models.OneToOneField(User)
gender = models.CharField(max_length=1)
gender_name = models.CharField(max_length=100)
person_id = models.CharField(max_length=100)
def save(self, *args, **kwargs):
self.person_id = "%07d" % self.id
super(Person, self).save(*args, **kwargs)
是因为我没有传递一个ID参数,它还没有保存?无论如何,从ID生成一个值?
只是改变顺序..调用超级之前的任务。 – karthikr
此外,使用'post_save'信号代替覆盖'save()'方法可能会更好。 –
该领域的目的是什么? –