DJNAGO自定义后台表单

编写你的第一个 Django 应用,第 7 部分 | Django 文档 | Django

app/admin.py


1. 单表后台自定义表单

1.1 简单方式

        指定表单中,不包括的字段。

class ClassAAdmin(admin.ModelAdmin):
    include = ['creator', 'created_date', 'modified_date']
    fields = ['field1', 'field2']

1.2 字段集方式

        多字段在同一行展示。经测试,TextField只能单行展示。

class ClassBadmin(admin.ModelAdmin):
    fieldsets = [
    (None, {'fields':['field1', 'field2']}), 
    ('FieldsetTitle', {'fields':['field1', 'field2']}),
]


# 多字段,同一行展示。
class StudentAdmin(admin.ModelAdmin):
    fieldsets = [
        ('settitle', {'fields': [('f1', 'f2', 'f2'), ('f3', 'f4'), 'f5']}),
        (),
    ]

 自定义表单追加到注册中

admin.site.register(ClassA, ClassAAdmin)
admin.site.register(classB, ClassBAdmin)

2. 一对多关系,添加关联自定义表单


# 2. 一对多关系,添加关联自定义表单

from django.contrib import admin
from app.models import Quesion, Choice


2.1 逐个添加可选项

admin.site.register(Choice)

2.2 BtackedInline以堆叠方式显示关联对象(添加和修改问题时,同时添加多个可选项)

class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3
class QuestionAdmin(admin.ModelAdmin):
    filedsets = [
    (None, {'fields':['question_text']}), 
    ('Data Information', {'fields': ['pub_date'], 'classes': ["ChoiceInline"]}),
]
    inlines = [ChoiceInline]

admin.site.register(Question, QuestionAdmin)

2.3 TabularInline以表格式显示关联对象

class ChoiceInline(admin.TabularInline):
    ...

# TabularInline,有一个delete列。

3. 自定义后台更改列表样式
     默认返回str()的值。自定义列表样式,可以实现排序,was_published_recently列除外(因为没有实现排序方法)。

class QuestionAdmin(admin.ModelAdmin):
    list_display = ['question_text', 'pub_date', 'was_published_recently']
# 注意was_published_recently()的调用方式。

was_published_recently实现排序的方法:

./app/models.py

from django.contrib import admin

class Question(models.Model):
    @admin.display(
        boolean = True,
        ordering = "pub_date",
        description = 'Pulbished recently',
    )
    def was_published_recently(self):
        now = timezone.now()
        return now - datetimetimedelta(days=1) <= self.pub_date <= now

4. 添加侧边栏过滤器

class QuestionAdmin(admin.ModelAdmin):
    list_filter = ['pub_date']

5. 添加搜索框

        搜索可以使用任意多的字段,使用LIKE来查询数据。

class QuestionAdmin(admin.ModelAdmin):
    search_fileds = ['question_text']

6. 分页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值