45

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

class TestModel(models.Model):
    payload = models.Charfield(max_length=200)

在这个模型中,pk属性将指向隐含id字段,如果没有字段被声明为主要字段,则生成该字段。

class CustomPK(models.Model)
    primary = models.CharField(max_length=100, primary=True)
    payload = models.Charfield(max_length=200)

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

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

4

2 回答 2

61

您还将在 pk 属性上拥有一个属性“名称”。这似乎持有该领域的名称。

CustomPK._meta.pk.name

在我的情况下,我得到值“id”作为结果(就像它应该的那样)。:-)

于 2012-11-16T14:59:32.467 回答
7

字段对象有一个primary_key属性

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


# True
# primary
# False
# payload
于 2012-11-16T14:36:11.940 回答