Jun 17, 2011

django models

参考:
1. Making queries
2. Field lookups

Model API

创建 Model Blog, Entry, Author
class Blog(models.Model):
  ...
class Author(models.Model):
  ...
class Entry(models.Model):
  headline = models.CharField(max_length=255)    
  blog = models.ForeignKey(Blog)
  pub_date = models.DateTimeField()
  authors = models.ManyToManyField(Author)
  n_comments = models.IntegerField()
    
创建并保存新纪录
from blog.models import Entry

entry = Entry(headline='some headline', ...)
entry.save()

查询一个记录(Model.objects 是一个管理器)
entry = Entry.objects.get(pk=1)

修改域,并保存
entry.headline="Another headline"
entry.blog = Blog.objects.get(...)
entry.save()

修改 ManyToManyField 并保存
entry.authors.add(Author.objects.get(...))
无需再 save

列出所有记录
Entry.objects.all()

查询并得到一个列表
Entry.objects.filter()
Entry.objects.exclude()

查询级联
Entry.objects.filter().exclude().filter()

删除一个记录,或者删除查询结果记录列表
entry = Entry.objects().get()
entry.delete()

entry_list = Entry.objects().filter()
entry_list.delete()

查询条件

格式,注意是双下划线
field__lookuptype=value

lookuptype:
以i开头表示 case insenstive
exact, iexact 相等

contains, icontains 包含

startswith, istartswith
endswith, iendswith

in 在列表中

gt 大于
gte 大于等于

lt 小于
lte

range 在一个范围中,inclusive, []

isnull (True/False)

search (MySQL only. Full-text search, taking advantage of full-text indexing. This is like contains but is significantly faster due to full-text indexing.)

regex/iregex 正则表达式
对于 date/datetime 类型,有
year
month
day
week_day (Sunday=1, Saturday=7)

1 comments:

小黑 said...

楼主,怎么订阅你的blog呀