Подтвердить что ты не робот

Получить имя основного поля модели Django

В 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

Итак, мой вопрос: как я могу получить имя поля, это первичный ключ?

4b9b3361

Ответ 1

У вас также будет атрибут "имя" в атрибуте pk. Это похоже на имя поля.

CustomPK._meta.pk.name

В моем случае я получаю значение "id" в качестве результата (как и должно).: -)

Ответ 2

Field объекты имеют атрибут primary_key

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


# True
# primary
# False
# payload