模型Django中的Id字段

syv*_*syv 13 django django-models

我总是在Django模型中获得一个主列作为Id.有没有可能改变.对于前者 对于City表我想要一个主键列city_id.

Aks*_*aaj 23

city_id = models.AutoField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)


kar*_*ikr 11

答案是肯定的,

像这样的东西:

city_id = models.PositiveIntegerField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)

在这里,你压倒了id.文档在这里

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

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

class City(models.Model)
    #attributes
    @property
    def city_id(self):
        return self.id
Run Code Online (Sandbox Code Playgroud)

并按照city.city_id通常的方式访问它city.id


小智 7

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

id = models.AutoField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)

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

所以对于你的情况是:

city_id = models.AutoField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)