【问题标题】:Cannot sort foreign keys fields in django admin list无法对 django 管理列表中的外键字段进行排序
【发布时间】:2013-08-18 11:58:48
【问题描述】:

我正在尝试对更改列表中的外键进行排序,但它还没有工作。 (我看到在表格中点击排序时,外键时出错)

class ProductVariantAdmin(admin.ModelAdmin):
    fields=["product", "test_software", "test_variables", "name", "description"]
    list_display = ("name", "product", "test_software", "test_variables", "description")
    search_fields = ["name"]
    form = ProductVariantForm

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        print db_field.name
        if db_field.name == "test_software_id":
            kwargs["queryset"] = TestSoftware.objects.all().order_by('name')
        return super(ProductVariantAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

我已经看到他们使用 formfield_for_foreignkey,但我仍然得到按 id 而不是按外键名称排序的列表。

有什么解决办法吗?我正在使用 django 1.4.1。

【问题讨论】:

    标签: django sorting django-admin foreign-keys


    【解决方案1】:

    formfield_for_foreignkey 只覆盖下拉菜单。

    您可能想要的是在模型的Meta 中订购:

     class TestSoftware(models.Model):
          class Meta:
               ordering = ['name']
    

    【讨论】:

    • 其实不是下拉菜单,而是最开始出现的变化列表。通过单击标题列进行排序时,它不起作用
    • 是的。这就是为什么您应该在要排序的外国模型上添加ordering
    猜你喜欢
    • 2012-02-18
    • 2022-11-13
    • 2021-02-25
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多