Django. Панель администрирования (часть 7)

И так у нас есть Модель и Таблица, которая связана с этой моделью, теперь нужно заполнить эту таблицу данными для этого в Django есть встроенная админка, которую можно настроить в файле admin.py

Сначала импортируем модель House

from .models import House
либо
from houses.models import House

И свяжем админку с моделью с помощью декоратора
@admin.register(House)

Создадим класс AdminHouse, который наследуется от admin.ModelAdmin, в нем мы будем конфигурировать отображение нашей панели

class AdminHouse(admin.ModelAdmin):

      pass

Full code:
from django.contrib import admin
from .models import House

@admin.register(House)
class AdminHouse(admin.ModelAdmin):
      pass

Создадим пользователя, который будет иметь доступ к админке

CTRL+ALT+R

createsuperuser
или
(pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py createsuperuser

Теперь введем:

  • Имя: admin
  • Email: xxx@mail.ru
  • Pass: admin12345 (повторить 2 раза, не менее 8 символов)

Запускаем сервер:

  • (pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py runserver
  • Переходим: http://127.0.0.1:8000/admin
  • Если забыл пароль, то можно создать нового юзера
  • (pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py createsuperuser

В админке мы видим два приложения “HOUSES” и “Пользователи и Группы


Нажмем на Пользователи и выберем admin, добавим имя и фамилию

Нажмем сохранить.

Данные сохранились.


И так, сейчас наше приложение HOUSES на англ. языке, исправим.

Откроем файл apps.py в нутри папки houses, добавим внутри класса HousesConfig поле verbose_name со значением “дома

Python2
Если возникает ошибка:
SyntaxError: Non-ASCII character
(no encoding declared; see http://www.python.org/peps/pep-0263.html)

то нужно добавить строчку:
# -*- coding: utf-8 -*-

class HousesConfig(AppConfig):
      name = 'houses'
      verbose_name = «дома»

А затем в файле __init__.py, той же папки создадим переменную
default_app_config = “houses.apps.HousesConfig”

Перезапускаем сервер. Все получилось.

Осталось только переименовать модель, для этого откроем файл models.py и внутри класса House, создадим класс Meta содержащий два параметра:

verbose_name = “дом”
verbose_name_plural = “дома”

Full code:
class House(models.Model):
      house_name = models.CharField(«Название», max_length=200, default=»»)
      house_price = models.IntegerField(«Цена», default=0)
      house_description = models.TextField(«Описание», default=»»)

class Meta:
      verbose_name = «Дом»
      verbose_name_plural = «Дома»

Класс Meta() — содержит мета-информацию, то есть описательную информацию о модели, в нашем случае ее имя в единственном и мн. числе.

Также в нем можно задать имя таблицы:

db_table = «article»

Класс Meta() — включает в себя дополнительные свойства для нашей будущей таблицы. Мы не хотим, чтобы Django самостоятельно давал название нашей таблицы, по-этому мы описываем это в классе Meta.

Так как мы изменили модель, то выполним команду:

CTRL+ALT+R
makemigrations houses
migrate houses

или создадим инструкцию
(pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py makemigrations houses
Далее с помощью инструкции заполним нашу базу данных:
(pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py migrate houses

Обновим страницу

И приложение и модель теперь на русском языке

Автор: Vladimir Semenovich