MySQL上的Django:自动创建id字段?

MySQL上的Django:自动创建id字段?,mysql,django,django-models,Mysql,Django,Django Models,在MySQL中,“slug”字段不是像PostgreSQL那样自动创建rowid字段: 在联接中使用,因为“id”字段不是在DB级别创建的。这意味着,当执行连接时,将使用“slug”FK和字符串数据!当然,与使用整数的连接相比,这是非常昂贵的 如何让Django在MySQL上创建db级别ID字段,就像在PostgreSQL上自动创建的那样?每个表只能有一个主键。由于您自己创建了一个,ORM不会为您创建一个。Django默认情况下会将id列添加到您的模型中。你是说你没有在MySQL中看到这个列吗?

在MySQL中,“slug”字段不是像PostgreSQL那样自动创建rowid字段:

在联接中使用,因为“id”字段不是在DB级别创建的。这意味着,当执行连接时,将使用“slug”FK和字符串数据!当然,与使用整数的连接相比,这是非常昂贵的


如何让Django在MySQL上创建db级别ID字段,就像在PostgreSQL上自动创建的那样?

每个表只能有一个主键。由于您自己创建了一个,ORM不会为您创建一个。

Django默认情况下会将
id
列添加到您的模型中。你是说你没有在MySQL中看到这个列吗?这与MySQL和PostgreSQL没有任何关系。@DanielRoseman,好吧,看来是我把SlugField标记为primary导致了这个问题_key@Sam不,我没有在MySQL中看到它,但问题一定与我如何定义主密钥有关。解决方案是简单地将SlugField声明为
unique=True
,而不是
primary\u key=True
,并自动创建
id
列。
slug = models.SlugField(primary_key=True, max_length=128)