首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在django admin中过滤下拉列表值

在Django Admin中过滤下拉列表值,可以通过以下几种方法实现:

  1. 使用ModelAdmin中的formfield_for_choice_field方法自定义下拉列表值。
代码语言:python
代码运行次数:0
复制
from django import forms
from django.contrib import admin
from .models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_choice_field(self, db_field, request, **kwargs):
        if db_field.name == 'my_choice_field':
            kwargs['choices'] = MyModel.MY_CHOICES.filter(some_filter=True)
        return super().formfield_for_choice_field(db_field, request, **kwargs)

admin.site.register(MyModel, MyModelAdmin)
  1. 使用ModelAdmin中的get_field_queryset方法自定义下拉列表值。
代码语言:python
代码运行次数:0
复制
from django.contrib import admin
from .models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    def get_field_queryset(self, db, db_field, request):
        if db_field.name == 'my_choice_field':
            return MyModel.objects.filter(some_filter=True)
        return super().get_field_queryset(db, db_field, request)

admin.site.register(MyModel, MyModelAdmin)
  1. 使用ModelForm中的__init__方法自定义下拉列表值。
代码语言:python
代码运行次数:0
复制
from django import forms
from .models import MyModel

class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['my_choice_field'].queryset = MyModel.objects.filter(some_filter=True)

    class Meta:
        model = MyModel
        fields = '__all__'

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm

admin.site.register(MyModel, MyModelAdmin)

以上方法可以实现在Django Admin中过滤下拉列表值,从而提高数据的可读性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券