Django 1.5 admin inline extra

у меня есть несколько моделей с большим количеством строк. Поскольку не все необходимы для каждого объекта, я объявил встроенную модель с extra = 0 Так что маленький add + появился на inline.

однако это, похоже, больше не работает в 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)

Edit (некоторые экраны):

Джанго 1.4: django 1.4 extra=0

Django 1.5: enter image description here

(Hinzufügen == add)

3 ответов


Это уже произошло раньше.

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.

существует патч, созданный Габриэлем Херли, чтобы восстановить желаемое поведение, не нарушая ничего другого. Это 3years назад, и я не знаю, работает ли он все еще для Django 1.5. Просто попробуйте:)

https://code.djangoproject.com/attachment/ticket/13023/13023_inlines_patch.diff

вот билет на ту же ошибку (3 года назад):

https://code.djangoproject.com/ticket/13023


Я столкнулся с той же проблемой, потому что у меня был статический контент администратора в каталоге, который был вне установки django. Копирование Джанго 1.5 статический контент с Django/ВНО/администратора/статический/админ/и JS/ в STATIC_ROOT/админ/JS и исправили проблему.


лучшим решением было бы переопределить метод get_extra самого встроенного. Это работает в Django 1.9, хотя я не могу сказать, для более ранних версий