2

我正在使用 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 字段以在内联中对其进行排序?

4

2 回答 2

2

模型排序元选项指定内联元素的顺序。

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

于 2011-05-12T16:27:40.457 回答
0

我想你可以覆盖

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

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

于 2011-05-27T09:35:12.227 回答