Python 在Django模型管理中使用水平过滤器修改多个字段的可用和选定选项
在模型管理员中,是否可以控制Python 在Django模型管理中使用水平过滤器修改多个字段的可用和选定选项,python,django,Python,Django,在模型管理员中,是否可以控制ManyToManyFieldhorizontal\u filter小部件在可用字段和所选字段中显示的内容 例如,我有一个县模型和一个地区模型,如果一个县已经分配给一个地区,我想隐藏它 下面的问题是所选的country对象将隐藏在带有horizontal\u filter的“Available”和“selected”小部件中。是否可以仅将它们隐藏在“可用”列中 您需要在自定义的模型表单中执行此逻辑,因为您需要实例来包括在编辑时已选择的县 class Territory
ManyToManyField
horizontal\u filter
小部件在可用字段和所选字段中显示的内容
例如,我有一个县
模型和一个地区
模型,如果一个县
已经分配给一个地区
,我想隐藏它
下面的问题是所选的country
对象将隐藏在带有horizontal\u filter
的“Available”和“selected”小部件中。是否可以仅将它们隐藏在“可用”列中
您需要在自定义的
模型表单中执行此逻辑,因为您需要实例
来包括在编辑时已选择的县
class TerritoryAdminForm(forms.ModelForm):
def __init__(self, *args, instance=None, **kwargs):
super().__init__(*args, instance=instance, **kwargs)
counties_filter = Q(territories__isnull=True)
if instance:
counties_filter |= Q(territories__id=instance.id)
self.fields['counties'].queryset = County.objects.filter(countries_filter)
@admin.register(Foo)
class TerritoryAdmin(admin.ModelAdmin):
form = TerritoryAdminForm
filter_horizontal = ['counties']
在不知道县和地区之间关系的名称的情况下,我假设它被命名为“地区”“…并想隐藏一个县”
“,隐藏在哪里?您是否可以添加您的相关模型和管理代码段,用于创建一个应用程序?
class TerritoryAdminForm(forms.ModelForm):
def __init__(self, *args, instance=None, **kwargs):
super().__init__(*args, instance=instance, **kwargs)
counties_filter = Q(territories__isnull=True)
if instance:
counties_filter |= Q(territories__id=instance.id)
self.fields['counties'].queryset = County.objects.filter(countries_filter)
@admin.register(Foo)
class TerritoryAdmin(admin.ModelAdmin):
form = TerritoryAdminForm
filter_horizontal = ['counties']