官术网_书友最值得收藏!

  • Django 2 by Example
  • Antonio Melé
  • 450字
  • 2021-06-25 21:19:00

Customizing the way models are displayed

Now, we will take a look at how to customize the admin site. Edit the admin.py file of your blog application and change it, as follows:

from django.contrib import admin
from .models import Post

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'author', 'publish',
'status')

We are telling the Django admin site that our model is registered in the admin site using a custom class that inherits from ModelAdmin. In this class, we can include information about how to display the model in the admin site and how to interact with it. The list_display attribute allows you to set the fields of your model that you want to display in the admin object list page. The @admin.register() decorator performs the same function as the admin.site.register() function we have replaced, registering the ModelAdmin class that it decorates.

Let's customize the admin model with some more options, using the following code:

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'author', 'publish',
'status')
list_filter = ('status', 'created', 'publish', 'author')
search_fields = ('title', 'body')
prepopulated_fields = {'slug': ('title',)}
raw_id_fields = ('author',)
date_hierarchy = 'publish'
ordering = ('status', 'publish')

Return to your browser and reload the post list page. Now, it will look like this:

You can see that the fields displayed on the post list page are the ones you specified in the list_display attribute. The list page now includes a right sidebar that allows you to filter the results by the fields included in the list_filter attribute. A Search bar has appeared on the page. This is because we have defined a list of searchable fields using the search_fields attribute. Just below the Search bar, there are navigation links to navigate through a date hierarchy: this has been defined by the date_hierarchy attribute. You can also see that the posts are ordered by Status and Publish columns by default. We have specified the default order using the ordering attribute.

Now, click on the Add Post link. You will also note some changes here. As you type the title of a new post, the slug field is filled in automatically. We have told Django to prepopulate the slug field with the input of the title field using the prepopulated_fields attribute. Also, now, the author field is displayed with a lookup widget that can scale much better than a drop-down select input when you have thousands of users, as shown in the following screenshot:

With a few lines of code, we have customized the way our model is displayed on the admin site. There are plenty of ways to customize and extend the Django administration site. You will learn more about this later in this book.

主站蜘蛛池模板: 河曲县| 枞阳县| 高碑店市| 聂拉木县| 阜平县| 乌拉特后旗| 荥阳市| 安龙县| 肇庆市| 虹口区| 尚志市| 油尖旺区| 铜梁县| 金阳县| 安新县| 外汇| 准格尔旗| 个旧市| 上虞市| 凯里市| 鄂托克旗| 甘南县| 尤溪县| 海安县| 德清县| 泰来县| 闻喜县| 淳化县| 永吉县| 来凤县| 祥云县| 贡山| 扬中市| 栾川县| 青铜峡市| 台东县| 常山县| 黑山县| 河曲县| 个旧市| 蓬莱市|