【问题标题】:Django custom method won't show upDjango自定义方法不会显示
【发布时间】:2011-04-20 21:32:24
【问题描述】:

我有两个自定义方法用于 Django 中的模型管理器。其中之一有效。我最近添加了另一个,而 Django(和 python)就像它不存在一样。这是模型的相关部分:

class FigureServerManager(models.Manager):
    #This method takes as input a user and grabs a figure that is not marked complete for which that user has not already submitted a result
    def serve_to_user(self,user):
    not_complete=super(FigureServerManager, self).get_query_set().filter(complete=0)
    for Figure in not_complete:
        checkifresult=User.objects.get(pk=user).result_set.all().filter(figure=Figure.id)
    if not checkifresult:
            return Figure

    #This is a copy of the above method that I want to change to do something else, but I can't even get it to show up yet
    def serve_training_task(self, user):
        with_correct_ans=super(FigureServerManager, self).get_query_set().filter(complete=0)
        for Figure in with_correct_ans:
            checkifresult=User.objects.get(pk=user).result_set.all().filter(figure=Figure.id)
        if not checkifresult:
                return Figure

class Figure(models.Model):
    doi=models.CharField(max_length=20)
    url=models.CharField(max_length=200)
    image=models.ImageField(upload_to='classify')
    complete=models.BooleanField()
    #include the default manager    
    objects=models.Manager()
    #add the extra one for serving figures
    serve_objects=FigureServerManager()

我在网站(运行 Django 开发服务器)上收到如下错误:

'FigureServerManager' object has no attribute 'serve_training_task'

如果我在 python 中运行 dir(FigureServerManager),则不会出现 serve_training_task 方法,但会出现 serve_to_user 方法。为什么 serve_training_task 不起作用?

【问题讨论】:

  • 你混合了制表符和空格,这通常是个坏主意。

标签: python django object methods django-models


【解决方案1】:

【讨论】:

  • 我将工作代码中的前导空格复制并粘贴到非工作代码中,这样它就可以工作了。谢谢。我正在用 gedit 写这个(初学者,你能告诉我吗?) - 有没有更好的方法来编写 python,其中至少有一些视觉提示让我知道这样的问题?现在它对我来说完全不透明。
  • 不幸的是,没有一个编辑器是通灵的,并且可以意识到你的意思是一个方法而不是一个模块级函数。这是你必须随着时间的推移获得经验的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 2017-08-07
  • 1970-01-01
  • 2015-09-26
  • 2021-07-08
  • 1970-01-01
相关资源
最近更新 更多