Django Admin StackedInline не загружается Добавить Другая модель, Uncaught TypeError: Невозможно прочитать свойство 'fn' из неопределенного - PullRequest
0 голосов
/ 05 июня 2018

Когда я добавляю несколько строк в мой django admin, как показано ниже, Add another {model name} исчезает.Если я проверяю консоль javascript, я вижу, что получаю следующую ошибку:

Uncaught TypeError: Невозможно прочитать свойство 'fn' из неопределенного

в inlines.js: 20

at inlines.js: 295

Вот мой админ Django:

@admin.register(models.Paper)
class PaperAdmin(BaseLiteratureAdmin):

    class EditedPaperAdminInline(admin.StackedInline):
        model = models.EditedPaper
        extra = 0

    class SupplementaryInformationAdminInline(admin.StackedInline):
        model = models.SupplementaryInformation
        extra = 0

    class PaperNotesAdminInline(BaseNotesAdminInline):
        exclude = tuple(
            i for i in BaseNotesAdminInline.exclude if i != 'paper'
        )

    class ReferencedPaperInline(admin.StackedInline):
        model = models.Paper.referenced_papers.through
        extra = 0
        fk_name = 'from_paper'
        verbose_name = "Referenced Paper"
        verbose_name_plural = "Referenced Papers"

    inlines = (
        EditedPaperAdminInline, # problem
        PaperNotesAdminInline, # ok single/together
        ReferencedPaperInline, # ok single/together
        SupplementaryInformationAdminInline, # problem

    )

Вот что я хотел бы увидеть: Admin with ability to Add new model

Вот что я вижу: enter image description here

И я нашел решение - это изменить порядок строк в списке inlines, вот так:

inlines = (
        PaperNotesAdminInline, # ok single/together
        ReferencedPaperInline, # ok single/together
        EditedPaperAdminInline, # problem
        SupplementaryInformationAdminInline, # problem

    )

#comments рядом с каждым встроенным примечанием, что PaperNotesAdminInline и ReferencedPaperInline оба 'OK' в том, что ссылка Add another {model name} все еще появляется, если они включены.Две другие строки, если они добавлены в порядке, указанном в определении модели администратора, приводят к ошибке JavaScript и исчезают ссылки для каждой строки.Однако, если я изменю порядок на второй список inlines, все загрузится правильно.

Что здесь происходит?

1 Ответ

0 голосов
/ 15 июня 2018

У меня та же проблема в моем проекте, на большом скрипте в формате inline.js загружается до jQuery и выдает ошибку.Я добавил измененный файл inline.js в папку своего проекта, он проверяет, загружен ли jQuery, а если нет, то ждет 300 мс и пытается снова.Патч здесь.

--- django/contrib/admin/static/admin/js/inlines.js
+++ myproject/myproject/static/admin/js/inlines.js
@@ -15,7 +15,8 @@
  * Licensed under the New BSD License
  * See: http://www.opensource.org/licenses/bsd-license.php
  */
-(function($) {
+
+function start_inline($) {
     'use strict';
     $.fn.formset = function(opts) {
         var options = $.extend({}, $.fn.formset.defaults, opts);
@@ -292,4 +293,16 @@
             }
         });
     });
-})(django.jQuery);
+};
+
+function start_inline_loader() {
+    try {
+        start_inline(django.jQuery);
+
+    } catch(e) {
+        console.log('no jQuery, try again after 300 mc');
+        setTimeout( function() {start_inline_loader();}, 300)
+    }
+}
+
+start_inline_loader();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...