【发布时间】:2016-09-04 11:28:25
【问题描述】:
我目前正在尝试自动生成一个id号并将其作为默认值存储在数据库中:
class EmployeeProfile(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
def generate_id(self):
first_initial = self.first_name[0].upper()
second_initial = self.last_name[0].upper()
id_number = first_initial + second_initial + str(random.randint(1000000, 9999999))
if not EmployeeProfile.objects.filter(employee_id=id_number).exists():
return id_number
employee_id = models.CharField(unique=True, max_length=11, default=generate_id)
我得到的是“TypeError:generate_id() 缺少 1 个必需的位置参数:'self'”。我查看了 Django 文档https://docs.djangoproject.com/en/1.9/ref/models/fields/#default,它说我可以在模型中使用可调用的默认值,这就是我所做的,但是当我尝试迁移数据库时出现这种类型错误。任何想法我做错了什么?
【问题讨论】:
-
它可以是可调用对象,但不是模型上的方法(如您所见,无法提供
self)。您应该改写save()方法。 -
效果很好。谢谢
标签: python django django-models