Django:从Form clean方法调用自定义Model方法。 “不受限制的方法”?

时间:2009-03-11 14:51:12

标签: python django

尝试从我的表单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)

通过这个错误,我可以假设我必须传递方法(File实例),但我真的不知道这意味着什么以及如何做到。

你能让我知道我在这里做错了什么,以及如何解决这个问题呢?


使用get_nzb_data装饰器将@classmethod方法设为类方法,

解决

2 个答案:

答案 0 :(得分:3)

你不能打电话

nzb_data = File.get_nzb_data(nzb_absolute)

因为你使用的是类,而不是对象。

你有两个选择。

  1. get_nzb_data设为@classmethod。请参阅http://docs.python.org/library/functions.html#classmethod

  2. 创建一个File实例并使用它。 temp_f= File(...)。然后是temp_f.get_dnb_data

答案 1 :(得分:1)

我可能在这里遗漏了一些东西,但我认为你的方法'get_nzb_data'应该有一个@classmethod装饰器。否则,它需要File类型的'self'参数,这会产生错误。