今天在把一个基于Django的项目部署在阿里云上时遇到一个奇怪的问题。模型定义如下:
class ABCUser (models.Model):
u_username = models.CharField(max_length=64, unique=True)
u_password = models.CharField(max_length=256)
u_email = models.CharField(max_length=64, unique=True)
u_icon = models.ImageField(upload_to='icons/%Y/%m/%d/')
is_active = models.BooleanField(default=False)
is_delete = models.BooleanField(default=False)
class Meta:
db_table = 'abc_user'
在本机上调试时如下代码是正确的:
user = ABCUser()
user.u_username = username
user.u_email = email
user.u_password = password
user.u_icon = icon
user.save()
但是当部署在服务器上时,程序执行到user.save()时就出错,导致server error 500。
最后找到一种解决方法,在代码上补上两行,把另外两个没定义的属性设置上值,变成:
user = AxpUser()
user.u_username = username
user.u_email = email
user.u_password = password
user.u_icon = icon
user.is_active = False #增加的代码
user.is_delete = False #增加的代码
user.save()
把这两行加上以后,这个错误就解决了,在数据库中可以看到增加的数据。
我也有点奇怪为什么要补上这些赋值才会通过。请高手帮解释一下吧。