Python 从视图调用类方法

Python 从视图调用类方法,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我是Django的新手,来自ASP.Net背景 我试图在一个web应用程序中实现OOP概念 我有一个维护电影列表的模型 url.py from movies import views url(r'^recent/$', views.recentlyadded) from django.db import models class MovieManager(models.Model): def title_count(self, keyword): return se

我是Django的新手,来自ASP.Net背景

我试图在一个web应用程序中实现OOP概念

我有一个维护电影列表的模型

url.py

from movies import views

url(r'^recent/$', views.recentlyadded)
from django.db import models

class MovieManager(models.Model):
    def title_count(self, keyword):
        return self.filter(title__icontains=keyword).count()

class Movie(models.Model):
    movieid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=250)
    objects = MovieManager()
from movies.models import Movie

def recentlyadded(request):
    r = Movie.objects.title_count('night')
    return HttpResponse("test")
型号.py

from movies import views

url(r'^recent/$', views.recentlyadded)
from django.db import models

class MovieManager(models.Model):
    def title_count(self, keyword):
        return self.filter(title__icontains=keyword).count()

class Movie(models.Model):
    movieid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=250)
    objects = MovieManager()
from movies.models import Movie

def recentlyadded(request):
    r = Movie.objects.title_count('night')
    return HttpResponse("test")
我正在尝试使用自定义管理器MovieManager根据关键字返回电影标题

视图.py

from movies import views

url(r'^recent/$', views.recentlyadded)
from django.db import models

class MovieManager(models.Model):
    def title_count(self, keyword):
        return self.filter(title__icontains=keyword).count()

class Movie(models.Model):
    movieid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=250)
    objects = MovieManager()
from movies.models import Movie

def recentlyadded(request):
    r = Movie.objects.title_count('night')
    return HttpResponse("test")
这会引发错误AttributeError:“Manager”对象没有属性“title\u count”

如何在最近添加的view.py函数中调用models.py方法


我想在视图中的多个视图/函数中使用recentlyadded()方法。

视图代码正确,但不是模型-
MovieManager
应该继承自
models.Manager
,而不是继承自
models.model
。找不到明确声明的
管理器
,元类将使用默认管理器覆盖
Movie.objects


FWIW您可以通过检查Python shell中的
Movie.objects
(或者通过阅读
django.db.models.base.ModelBase
)的源代码自己找到答案

返回电影标题。你可能会把这个放在model.py文件中

如果模型文件

def __unicode__(self):
    return self.title

我同意你的看法,我本可以更仔细地阅读,从下次开始我当然会谨慎。