我对Django很安静,我来自ASP.Net背景。
我正在尝试在其中一个Web应用程序中实现OOP概念。
我有一个维护电影列表的模型
url.py
from movies import views
url(r'^recent/$', views.recentlyadded)
models.py
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()
我正在尝试使用自定义管理器MovieManager
返回基于关键字的电影片段views.py
from movies.models import Movie
def recentlyadded(request):
r = Movie.objects.title_count('night')
return HttpResponse("test")
抛出错误AttributeError:'Manager'对象没有属性'title_count'
如何在最近添加的view.py函数中调用models.py方法?
我想在视图中的多个视图/函数中使用recentadded()方法。
答案 0 :(得分:1)
视图代码是正确的,但不是模型 - MovieManager
应该从models.Manager
继承,而不是从models.Model
继承。未找到明确声明的Manager
,元类用默认管理器覆盖Movie.objects
。
您可以通过在Python shell中检查Movie.objects
(或通过阅读django.db.models.base.ModelBase
的源代码)自行找到。
答案 1 :(得分:1)
返回电影标题。你可能会有这个model.py文件
如果模型文件
,请在最后执行def __unicode__(self):
return self.title