15 сентября 2016 г.

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

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


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

Комментариев нет :

Отправить комментарий

Оставить отзыв