【发布时间】:2020-12-26 09:33:31
【问题描述】:
目前我有以下模型,我想将 CharField 设置为主键(我的数据库是 Mysql)
class Customer(models.Model):
class Meta:
db_table = "customers"
verbose_name = _('Customer')
verbose_name_plural = _('Customers')
customer_id = models.CharField(_('Customer ID'),max_length=255, primary_key=True)
name = models.CharField(_('Name'), max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
在document 中声明:
primary_key=True 意味着 null=False 和 unique=True。只有一个初级 对象上允许使用键。
在Mysql中,主键的结构如下:
customer_id, type=varchar(255), collation=latin1_swedish_ci, Attributes=blank Null=No, Default=None,Comments=blank, Extra=blank
但是当我尝试对主键使用 null 值的 save() 方法时:
Customer.objects.create(customer_id=None, name="abc")
它仍然在主键中保存 Null 值而不返回任何错误或验证,这是为什么呢?
编辑: 在 Mysql 中保存后,它会显示 customer_id=blank 的值(当尝试将其保存为 None 时)。为什么保存 customer_id=None 时设置为空白?
【问题讨论】:
标签: mysql django django-models