Những gì tôi muốn làm:
Nếu có nhiều bảng, sẽ khó ghi vào admin.py
.
Tôi muốn bạn nó được thực hiện tự động.
⇣
Nếu chúng ta sử dụng lệnh admin_generator
của thư viện được gọi là django-extensions
, nó có thể được thực hiện tự động.
Nó thực sự làm công việc của anh ấy liên quan đến nội dung của models.py
.
Phần django-extension
là gì?
django-extensions
rộng chức năng của manage.py
và có nhiều lệnh khác.
Tải về
1 2 | $ pip install django-extensions |
Thêm vào settings.py
- pj_name / settings.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | . . INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django_extensions', # <- 追記 ] . . |
Hành hình
Ghi đè kết quả đầu ra trong admin.py
.
$ APP chứa tên ứng dụng tạo ra với $ python manage.py
startApp xxx.
1 2 | $ python manage.py admin_generator $APP > $APP/admin.py |
Kết quả
Ví dụ:
Lớp này:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ... class Users(models.Model): user_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) first_name = models.CharField(max_length=255) email = models.CharField(max_length=255) created_at = models.DateTimeField() updated_at = models.DateTimeField() del_flg = models.IntegerField() class Meta: managed = False db_table = 'users' ... |
Sẽ trông như thế này:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ... @admin.register(Users) class UsersAdmin(admin.ModelAdmin): list_display = ( 'id', 'user_name', 'last_name', 'first_name', 'email', 'created_at', 'updated_at', 'del_flg', ) list_filter = ('created_at', 'updated_at') date_hierarchy = 'created_at' ... |
Tạo người dùng để đăng nhập trên màn hình quản lý
1 2 3 4 5 6 7 8 | $ python manage.py createsuperuser Username (leave blank to use 'your_home_dir'): <- any name as you wish Email address: Password: Password (again): Superuser created successfully. |
Khởi động máy chủ cục bộ
1 2 | $ python manage.py runserver |
Truy cập vào địa chỉ này: http://127.0.0.1:8000/admin/
Sẽ không sao nếu bảng đăng nhập được hiển thị với thông tin người dùng đã tạo trước đó.