Создание модели.
Перейдём в файл models.py в директории приложения и по аналогии с предыдущей моделью, создадим новый класс BotUserModel.
И создадим несколько полей:
class BotUserModel(models.Model):
chat_id = models.BigIntegerField(primary_key=True)
first_name = models.CharField(max_length=50,
verbose_name='Имя')
last_name = models.CharField(max_length=50,
blank=True,
null=True,
verbose_name='Фамилия')
username = models.CharField(max_length=50,
blank=True,
null=True)
created = models.DateTimeField(auto_now_add=True,
verbose_name='Зарегистрирован')
updated = models.DateTimeField(auto_now=True,
verbose_name='Последняя активность')
Разберём, что тут новое:
- В поле
chat_id, указали, что это поле является Первичным ключом. То есть, это поле уникально. И использовали поле типаBigIntegerField, поскольку значенияTelegram-IDвыходят за границы базовогоIntegerField. - В полях
last_nameиusernameдобавили два параметра.blankозначает, что поле может быть пустым, аnullозначает, что оно может иметь значениеNULL. Это обусловлено тем, что имя у пользователя Telegram обязательно к заполнению, а вот фамилия или имя пользователя - нет. - В поле
createdмы присваиваем текущую, локальную дату(дату сервера). При последующем обновлении модели, это поле не будет изменяться, если конечно его не изменить намерено. - Поле
updatedнапротив, будет при каждом обновлении модели принимать значение текущего времени.
Дополнения к модели.
Добавим базового менеджера, Мета-класс и dunder-метод __str__:
objects = models.Manager()
class Meta:
ordering = ['-updated']
verbose_name = 'Пользователь бота'
verbose_name_plural = 'Пользователи бота'
def __str__(self):
return self.first_name
В переменную objects мы поместили экземпляр класса Manager.
Менеджеры, это удобный способ взаимодействия с объектами в базе данных. С помощью них получаем данные, фильтруем, создаём. В будущем мы переопределим своих менеджеров, но пока достаточно базового.
Из нового в классе Meta только пункт ordering определяющий порядок сортировки записей в базе данных. Для удобства сортировка будет по параметру updated. Обратите внимание на "-", он означает что сортировка будет в обратном порядке, то есть по убыванию, от самых новых к старым.
Регистрация модели.
Перейдём в файл admin.py и зарегистрируем модель в панели администратора:
@admin.register(models.BotUserModel)
class BotUserAdmin(admin.ModelAdmin):
list_display = ('chat_id', 'first_name', 'last_name', 'username', 'created', 'updated')
search_fields = ['chat_id', 'first_name', 'username', ]
Обратите внимание! Если вы регистрировали модель не через декоратор, а через admin.site.register, то код находящийся выше, надо добавлять до строки с регистрацией!
Здесь я указал, что бы отображались все поля модели. Включил поиск по полям chat_id, first_name и username.
Теперь надо применить миграции:
python manage.py makemigrations
python manage.py migrate
Запустим Django python manage.py runserver и убедимся, что модель добавилась в панель администратора.

Комментарии
Оставить комментарийВойдите, чтобы оставить комментарий.
Комментариев пока нет.