获取Django模型的主要字段的名称

Mar*_*tin 34 python django django-models

在Django中,每个模型都有一个伪属性pk,指向声明为主键的字段.

class TestModel(models.Model):
    payload = models.Charfield(max_length=200)
Run Code Online (Sandbox Code Playgroud)

在此模型中,pk属性将指向隐式id字段,如果没有声明字段是主要字段,则生成该字段.

class CustomPK(models.Model)
    primary = models.CharField(max_length=100, primary=True)
    payload = models.Charfield(max_length=200)
Run Code Online (Sandbox Code Playgroud)

在此模型中,pk属性将指向显式定义的主键字段primary

所以我的问题是,我怎样才能获得该字段的名称,即主键?

zon*_*nky 44

您还将在pk-attribute上具有属性"name".这似乎保留了Field的名称.

CustomPK._meta.pk.name
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我得到值"id"作为结果(就像它应该).:-)

  • pk.name不返回列名,它跳过"_id"后缀.(在django 1.7上测试过)我使用过CustomPK._meta.pk.column (6认同)

dm0*_*514 7

字段对象有一个primary_key属性

for field in CustomPK._meta.fields:
  print field.primary_key
  print field.name


# True
# primary
# False
# payload
Run Code Online (Sandbox Code Playgroud)