从Vi调用类方法

2024-06-16 15:04:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是刚到Django的,我来自ASP.Net背景。你知道吗

我试图在一个web应用程序中实现OOP概念。你知道吗

我有一个模型,里面有电影列表

网址.py

from movies import views

url(r'^recent/$', views.recentlyadded)

型号.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返回基于关键字的电影标题

视图.py

from movies.models import Movie

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

这将抛出错误AttributeError:'Manager'对象没有属性'title\u count'

如何打电话型号.py最近添加的方法视图.py功能?你知道吗

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


Tags: frompyimport视图电影titlemodelscount
2条回答

返回电影标题。你可能会有这个型号.py文件

如果模型文件

def __unicode__(self):
    return self.title

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

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

相关问题 更多 >