Django 1.5 管理后台中内联额外字段
我有一些模型里面包含了很多内联字段。因为并不是每个对象都需要所有的内联字段,所以我把内联模型设置为 extra = 0
,这样在内联部分就会出现一个小的 add +
按钮。
不过,这在django 1.5中似乎不再有效。如果设置了 extra = 0
,那么内联部分就不能再编辑了。
有没有办法让1.4的功能在1.5中也能用呢?
示例代码:
class ModelInline(admin.StackedInline):
model = MyModel
extra = 0
class OtherModelAdmin(admin.ModelAdmin)
inlines = [ModelInline]
admin.site.register(OtherModel, OtherModelAdmin)
编辑(一些界面):
Django 1.4:

Django 1.5:

(Hinzufügen == 添加)
5 个回答
0
更好的解决办法是重写内联本身的 get_extra 方法。这在 Django 1.9 中是有效的,不过我不能确定在更早的版本中是否也能这样做。
2
我遇到了同样的问题,因为我把静态的管理内容放在了一个不在Django安装目录里的文件夹里。把Django 1.5的静态内容从django/contrib/admin/static/admin/js/复制到STATIC_ROOT/admin/js里,就解决了这个问题。
8
这件事之前已经发生过了。
The new javascript made this impossible because the "Add Another" button
was controlled by max_num, and ignored a value of 0.
The javascript ignored a value of 0 because max_num has a default value of 0,
and all the code using it had taken to equating max_num = 0 with being "off".
So you can't actually have a maximum of 0. It's not possible.
有个叫Gabrial Hurley的人做了一个补丁,可以恢复想要的功能,而且不会影响其他东西。这是三年前的事情,我不知道这个补丁在Django 1.5上是否还有效。你可以试试看 :)
https://code.djangoproject.com/attachment/ticket/13023/13023_inlines_patch.diff
这是关于同一个bug的记录(三年前的):