Python 从视图调用类方法
我是Django的新手,来自ASP.Net背景 我试图在一个web应用程序中实现OOP概念 我有一个维护电影列表的模型 url.pyPython 从视图调用类方法,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
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
我同意你的看法,我本可以更仔细地阅读,从下次开始我当然会谨慎。