AttributeError: объект CSVupload не имеет атрибутов 'urls'

Существует также третье решение этой проблемы, отличное от того, чтобы сделать его окончательным или объявить недоступную переменную в качестве члена класса, поскольку эти параметры не всегда возможны или желательны.

Во-первых, мы просто НЕ МОЖЕМ сделать переменную окончательной, поскольку ее состояние может меняться во время запуска программы, и наши решения внутри внутреннего переопределения класса могут зависеть от его текущего состояния.

Во-вторых, хорошая практика объектно-ориентированного программирования предполагает использование только переменных / константы, которые являются жизненно важными для определения класса как членов класса. Это означает, что если переменная, на которую мы ссылаемся внутри анонимного переопределения внутреннего класса, является просто переменной утилиты, то она не должна быть указана среди членов класса.

Итак - с Java 8 - теперь мы имеем третий вариант, описанный здесь:

https://docs.oracle.com/javase/tutorial/java/javaOO/localclasses.html

Начиная с Java SE 8, если вы объявляете локальный класс в методе, он может получить доступ к параметрам метода.

Итак, теперь мы можем просто поместить код, содержащий новый внутренний класс & amp; его метод переопределяется в частный статический метод, параметры которого включают переменную, которую мы вызываем изнутри переопределения. Этот статический метод вызывается после утверждения объявления btnInsert: -

 // Original code :
 Button btnInsert = new Button(shell, SWT.NONE);
 // Call to new private static method :
 addMouseListener(Button btnInsert, Statement statement);

 . . . 
 . . .
 . . . 

 // New private static method to give access to query statement :
 private static void addMouseListener(Button btn, Statement st)
 {
    btn.addMouseListener(new MouseAdapter() {


      @Override
      public void mouseDown(MouseEvent e) {
        String name = text.getText();
        String from = text_1.getText();
        String to = text_2.getText();
        String price = text_3.getText();

        String query = "INSERT INTO booking (name, fromst, tost,price) VALUES ('"+name+"', '"+from+"', '"+to+"', '"+price+"')";
        try {
            st.executeUpdate(query);
        } 
        catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
  });
  return;
}

 . . . .
 . . . .
 . . . .

0
задан Akshay Tetwar 13 July 2018 в 13:55
поделиться

1 ответ

Второй параметр register() - это класс ModelAdmin. Если вы хотите зарегистрировать сразу несколько моделей, без определенных ModelAdmins, вы должны передать их как interable в первом параметре:

admin.site.register([AdminProduct, CSVupload])
0
ответ дан Daniel Roseman 17 August 2018 в 12:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: