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-attributeには属性「name」があります。これはフィールドの名前を保持しているようです。

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 に答える