You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin中用激活复选框控制客户的隐藏/显示?

在Django Admin中实现客户的激活/隐藏管理

1. 给客户模型添加「是否激活」字段

在你的models.py中,为Customer模型添加布尔类型的激活状态字段:

from django.db import models

class Customer(models.Model):
    name = models.CharField(max_length=100)
    # 其他业务字段...
    is_active = models.BooleanField(default=True, verbose_name="是否激活")

    def __str__(self):
        return self.name

default=True确保新创建的客户默认处于激活状态,verbose_name用于在Admin后台显示友好的字段名称。

2. 配置Django Admin,实现快速编辑

在admin.py中注册Customer模型,将is_active字段加入列表显示、可编辑区域,并添加筛选器:

from django.contrib import admin
from .models import Customer

@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
    # 列表页显示的字段
    list_display = ('name', 'is_active',)
    # 列表页可直接点击编辑的字段
    list_editable = ('is_active',)
    # 侧边栏添加状态筛选器
    list_filter = ('is_active',)

配置完成后,在Admin的客户列表页就能直接勾选/取消复选框修改激活状态,还能通过侧边筛选器快速区分激活/未激活客户。

3. 前端下拉框只加载激活客户

如果前端下拉框通过Django表单生成,修改ModelChoiceField的查询集:

from django import forms
from .models import Customer

class YourBusinessForm(forms.Form):
    customer = forms.ModelChoiceField(
        queryset=Customer.objects.filter(is_active=True),
        label="选择客户"
    )

如果是模板手动渲染下拉框,在视图中传递过滤后的查询集:

def your_view(request):
    active_customers = Customer.objects.filter(is_active=True)
    return render(request, 'your_template.html', {'active_customers': active_customers})

模板中循环渲染:

<select name="customer">
    {% for customer in active_customers %}
        <option value="{{ customer.id }}">{{ customer.name }}</option>
    {% endfor %}
</select>

4. 可选:批量激活/禁用客户

在CustomerAdmin中添加批量操作,提高批量管理效率:

@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
    # 保留之前的配置...
    actions = ['make_active', 'make_inactive']

    def make_active(self, request, queryset):
        queryset.update(is_active=True)
        self.message_user(request, "选中客户已批量激活")
    make_active.short_description = "批量激活选中客户"

    def make_inactive(self, request, queryset):
        queryset.update(is_active=False)
        self.message_user(request, "选中客户已批量禁用")
    make_inactive.short_description = "批量禁用选中客户"

选中多个客户后,通过顶部操作下拉框就能批量设置激活状态。

内容的提问来源于stack exchange,提问作者Marco Bustamante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:40:25