35

在 Django 模型中,我总是得到一个主列作为 Id。有没有改变的可能。例如。对于 City 表,我希望有一个主键列作为city_id.

4

4 回答 4

48
city_id = models.AutoField(primary_key=True)
于 2013-08-05T18:30:30.760 回答
19

答案是肯定的,

像这样的东西:

city_id = models.PositiveIntegerField(primary_key=True)

在这里,您将覆盖id. 文档在这里

如果您想指定自定义主键,只需在其中一个字段上指定 primary_key=True。如果 Django 看到你明确设置了 Field.primary_key,它不会添加自动 id 列。

或者,您始终可以定义模型属性并使用它。例子

class City(models.Model)
    #attributes
    @property
    def city_id(self):
        return self.id

并像city.city_id往常一样访问它city.id

于 2013-08-05T18:21:54.700 回答
5

当然可以。

city_id = models.BigIntegerField(primary_key=True)
于 2013-08-05T18:21:00.933 回答
3

默认情况下,Django 为每个模型提供以下字段:

id = models.AutoField(primary_key=True)

这是一个自动递增的主键。

所以对于你的情况是:

city_id = models.AutoField(primary_key=True)
于 2020-04-23T20:28:03.063 回答