Наличие поля с именем «создан» в модели - Django - PullRequest
2 голосов
/ 03 сентября 2010

У меня есть такая модель:

class Item(models.Model):

    name = models.CharField(max_length=150)
    created = models.DateTimeField(auto_now_add=True)

класс администрирования следующий:

class ItemAdmin(admin.ModelAdmin):

    list_display = ('name', 'created')

созданное поле не существует

Есть ли какие-то базовые знания Джанго, которые я пропустил или забыл?

Ответы [ 3 ]

5 голосов
/ 03 сентября 2010

Когда вы говорите, что поле не существует, вы имеете в виду, что оно не отображается в форме смены администратора? Это ожидаемое поведение при использовании auto_now_add. Если вы хотите, чтобы поле получало значение по умолчанию при создании, но при этом оставалось редактируемым, используйте вместо него default=datetime.datetime.now.

1 голос
/ 03 сентября 2010

Странно. Я опробовал ваш пример, и он отлично работал (Django 1.2.1, Python 2.6.2) Можете ли вы проверить, что:

  1. Поле существует в базе данных (возможно, запустите SQL-запрос)
  2. Проверьте ваш admin.py (еще раз) на наличие различий.

Обновление

@ Daniel ответ с большей вероятностью поможет ОП.

0 голосов
/ 14 марта 2011

Только убедитесь, что не забыли зарегистрировать ItemAdmin в admin.py:

admin.site.register(Item, ItemAdmin)

Однако, поле «созданный» будет отображаться только на странице списка элементов, а также если вы добавитедополнительное поле, например:

updated = models.DateTimeField(auto_now=True)
...