【问题标题】:django admin: show list of items filtereddjango admin:显示过滤的项目列表
【发布时间】:2011-04-18 17:00:28
【问题描述】:

我正在开发一个 django 管理界面,并且我有一个具有外键的模型。在该字段中,查看管理页面时会出现一个下拉菜单。有没有办法仅在 is_active=1 的情况下过滤下拉结果?

问候,

【问题讨论】:

    标签: python django


    【解决方案1】:

    limit_choices_to 是你所追求的。

    如果您只想在 ModelAdmin 中进行有限的选择,您应该相应地调整您的 ModelForm

    应该这样做:

    class YourAdminForm(forms.ModelForm):
    
        class Meta:
            model = YourModel
    
        def __init__(self, *args, **kwargs):
            super(YourAdminForm, self).__init__(*args, **kwargs)
            qs = self.fields['your_fk_field'].queryset
            self.fields['your_fk_field'].queryset = qs.filter(is_active=1) 
    

    【讨论】:

      【解决方案2】:

      根据docs

      class MyModelAdmin(admin.ModelAdmin):
          def formfield_for_foreignkey(self, db_field, request, **kwargs):
              if db_field.name == "car":
                  kwargs["queryset"] = Car.objects.filter(is_active=1)
              return super().formfield_for_foreignkey(db_field, request, **kwargs)
      

      如果您需要访问当前对象,请查看How do I get the actual object id in a Django admin page (inside formfield_for_foreignkey)?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-17
        • 2012-05-11
        • 2021-04-09
        • 2016-04-23
        • 2012-07-05
        • 2018-04-20
        • 2020-09-26
        相关资源
        最近更新 更多