Django: вызов пользовательского метода Model из метода Clean Form. «Несвязанный метод»? - PullRequest
1 голос
/ 11 марта 2009

У меня проблема при попытке вызвать пользовательский метод Model из моего метода clean.

Вот [часть] моей модели:
http://dpaste.com/hold/12695/

Вот моя форма:
http://dpaste.com/hold/12699/

У меня конкретно проблема со строкой 11 в моей форме:
nzb_data = File.get_nzb_data(nzb_absolute)

Возникает следующая ошибка:

TypeError at /admin/main/file/add/

unbound method get_nzb_data() must be called with File instance as first argument (got str instance instead)

По этой ошибке я могу предположить, что мне нужно что-то передать методу (экземпляр файла), однако я не знаю, что это значит и как я могу это сделать.

Можете ли вы сообщить мне, что я делаю здесь неправильно, и что можно сделать, чтобы решить проблему?


Решено путем превращения метода get_nzb_data в метод класса с использованием декоратора @classmethod.

Ответы [ 2 ]

3 голосов
/ 11 марта 2009

Вы не можете позвонить

nzb_data = File.get_nzb_data(nzb_absolute)

потому что вы используете класс, а не объект.

У вас есть два варианта.

  1. Make get_nzb_data a @classmethod. Смотри http://docs.python.org/library/functions.html#classmethod

  2. Создайте экземпляр File и используйте его. temp_f= File(...). Тогда temp_f.get_dnb_data.

1 голос
/ 11 марта 2009

Возможно, я что-то здесь упускаю, но я думаю, что ваш метод 'get_nzb_data' должен иметь декоратор @classmethod. В противном случае он ожидает аргумент «самого себя» типа File, и это дает эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...