【问题标题】:Django ManyToMany Inlines Ordering in 1.2.x1.2.x 中的 Django ManyToMany 内联排序
【发布时间】:2010-11-12 17:08:07
【问题描述】:

我正在使用 Django 1.2 的新 ManyToMany admin.TabularInline 在管理应用程序中显示相关对象,它工作得很好,只是我不知道将“ordering”属性设置为什么以便它可以按交叉引用的字段名称之一。

例如:

class Foo(models.Model):
    name = models.CharField(max_length=100)

class Bar(models.Model):
    title = models.CharField(max_length=100)
    foos = models.ManyToManyField(Foo)

class FooBarInline(admin.TabularInline):
    model = Bar.foos.through
    ordering = ('name', )  # DOES NOT WORK
    raw_id_fields = ('name', )  # THROWS EXCEPTION

class FooAdmin(admin.ModelAdmin):
    inlines = (FooBarInline, )

    class Meta:
        model = Foo

我怎样才能到达 Foo.name 字段以便在内联中按它排序?

【问题讨论】:

  • 你试过'foo__name'吗?
  • 'FooBarInline.raw_id_fields' 指的是模型 'Bar_foos' 中缺少的字段 'foo__name'。

标签: python django inlines modeladmin


【解决方案1】:

模型ordering meta option 指定内联元素的顺序。

class Foo(models.Model):
    name = models.CharField(max_length=100)

    class Meta:
        ordering = ('name',)

如果您需要使管理模型的顺序与您的主要顺序不同,您可以执行以下操作:

class Foo_Extended(Foo):
    class Meta:
        ordering = ('name',)

并将 Foo_Extended 用于您的 AdminInline 模型。

我假设你知道这一点,但 Django 1.3 向 InlineAdmin 模型添加了排序选项,但我知道你说的是 Django 1.2

【讨论】:

    【解决方案2】:

    我认为你可以覆盖

    ModelAdmin.formfield_for_foreignkey(self, db_field, request, **kwargs)
    

    您可以在ModelAdmin.formfield_for_foreignkey 的文档中找到详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-20
      • 2012-01-05
      • 1970-01-01
      • 2014-09-05
      • 2011-10-20
      • 2023-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多