from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
def __unicode__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
def __unicode__(self):
return u‘%s %s‘ % (self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
def __unicode__(self):
return self.title





class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField(blank=True, null=True)
num_pages = models.IntegerField(blank=True, null=True)
def __unicode__(self):
return self.title





class BookManager(models.Manager):
def title_count(self, keyword):
return self.filter(title__icontains=keyword).count()
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
num_pages = models.IntegerField(blank=True, null=True)
#可以直接赋值替换掉默认的objects管理器,也可以定义一个新的管理器变量
#调用时,直接使用这个新变量就可以了,一旦定义了新的管理器,默认管理器
#需要显示声明出来才可以使用
# objects = models.Manger()
objects = BookManager()
def __unicode__(self):
return self.title

from django.db import models
class RogerBookManager(models.Manager):
def get_query_set(self):
#调用父类的方法,在原来返回的QuerySet的基础上返回新的QuerySet
return super(RogerBookManager, self).get_query_set().filter(title__icontains=‘python‘)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
#objects默认管理器需要显示声明,才能使用
objects = models.Manager() # 默认的管理器
roger_objects = RogerBookManager() # 自定义的管理器,用新变量

from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
birth_date = models.DateField()
address = models.CharField(max_length=100)
city = models.CharField(max_length=50)
# 用来判读是否在baby boomer出生,可以不用放在数据库表中
def baby_boomer_status(self):
"Returns the person‘s baby-boomer status."
import datetime
if datetime.date(1945, 8, 1) <= self.birth_date <= datetime.date(1964, 12, 31):
return "Baby boomer"
if self.birth_date < datetime.date(1945, 8, 1):
return "Pre-boomer"
return "Post-boomer"
# 用来返回全名,这个可以不被插入到数据库表中
def get_full_name(self):
"Returns the person‘s full name."
return u‘%s %s‘ % (self.first_name, self.last_name)
from django.db import connection, models
class PythonBookManager(models.Manager):
def books_titles_after_publication(self, date_string):
cursor = connection.cursor()
cursor.execute("""
SELECT title
FROM books_book
WHERE publication_date > %s""", [date_string])
#fetchall()返回的是元组的列表
return [row[0] for row in cursor.fetchall()]
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField(blank=True, null=True)
num_pages = models.IntegerField(blank=True, null=True)
objects = models.Manager()
python_objects = PythonBookManager()

原文:http://www.cnblogs.com/zhaojia-dream/p/4555052.html