Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django模型管理中使用水平过滤器修改多个字段的可用和选定选项_Python_Django - Fatal编程技术网

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']