@Quirel

Как в админке посмотреть id объекта?

Исходя из того, что говорится в оффициальном туториале, джанго автоматически присваивает id для каждого обекта модели.
При создании шаблона, там можно использовать {{ object.id }}. И все работает.
Но я хочу, чтобы id отображался в админке.
fields = ['id'] не работает.
Вот код модели:
class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=20)
    votes = models.IntegerField(default=0)

Вот код в admin.py
class ChoiceInLine(admin.TabularInline):
    model = Choice
    extra = 3
    fields = ['choice_text', 'votes']

Так все работает, но если использовать fields = ['choice_text', 'votes', 'id'], тогда при загрузке страницы получаю KeyError.
  • Вопрос задан
  • 2723 просмотра
Решения вопроса 1
mututunus
@mututunus
Backend developer (Python, Golang)
readonly_fields = ['id']
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
desperadik
@desperadik
Истина где-то рядом.
Все что вы вписываете в fields - подразумевает, что вы описываете какие поля можно редактировать. Естественно, если Вы впишите туда id(permanent key, identificator) получите KeyError.
Ответ написан
Комментировать
pinkevich
@pinkevich
Developer
в модели добавьте метод ниже, и будет выводится в админке Obj: 1, Obj: 2...
def __str__(self):
    return 'Obj: {}'.format(self.id)

если нужно больше чем в __str__, то юзайте fields, например:
fields = ['__str__', 'choice_text', 'votes']
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы