Models.py和Admin.py编写:
Models.py,编写字段,这里需要注意Category(models.Model)
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Category(models.Model):
修改 blog APP 下面的 admin.py 文件
from django.contrib import admin
from .models import Category, Tag, Post
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'status', 'owner', 'is_nav', 'post_count','created_time')
fields = ('name', 'status', 'is_nav')
# select * from Post p where p.category = 'Demo'
def post_count(self, obj):
return f"{obj.post_set.count()}篇文章"
post_count.short_description = "文章数"
def save_model(self, request, obj, form, change):
obj.owner = request.user
print(request.user)
return super(CategoryAdmin, self).save_model(request, obj, form, change)
@admin.register(Tag)
class TagAdmin(admin.ModelAdmin):
pass
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('category','title', 'owner', 'status')
exclude =('owner',)
actions_on_top = True # 首页的按钮
actions_on_bottom = True # 首页的按钮
save_on_top = True # 编辑页面的按钮
search_fields = ('title','category__name')
def save_model(self, request, obj, form, change):
obj.owner = request.user
print(request.user)
return super(PostAdmin, self).save_model(request, obj, form, change)
```
search_fields:定义了可以通过哪些字段来进行搜索,需要注意的是:如果查询的字段是外键,则需要指定通过该外键下的那个字段来查询,比如:category__name 代表的就是 category 表中 name 字段
写完之后:
开启宝塔Nginx服务,打开网页看效果