Subscribe:

2011/06/16

Django オブジェクト選択メモ

class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()

class Author(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()

class Entry(models.Model):
blog = models.ForeignKey(Blog)
headline = models.CharField(max_length=255)
body_text = models.TextField()
pub_date = models.DateTimeField(null=True)
authors = models.ManyToManyField(Author)

# 全てのBlogを取得
obj = Blog.objects.all()

# id(pk)が1のBlogを選択
obj = Blog.objects.get(pk=1)
※getとfilterの違い(getは1オブジェクトしか取得できない。)

# ブログ名がcalltellaを選択
obj = Blog.objects.get(name="calltella")

# 2010年のエントリーを選択
obj = Entry.objects.filter(pub_date__year=2010)

# 2010年でないエントリーを選択
obj = Entry.objects.exclude(pub_date__year=2010)

# エントリーが2010年4月1以降を選択
obj = Entry.objects.pub_date__gte=datetime(2010, 4, 1)
※不等号メモ lt(<),gt(>),lte(<=),gte(>=)

# calltellaブログのエントリーのみ選択(リレーションまたぎ)
obj = Entry.objects.filter(blog__name='calltella')

# pub_dateがNULLのエントリーを選択
obj = Entry.objects.filter(pub_date__isnull = True)

# エントリーIDが1,3,5を選択
obj = Blog.objects.filter(pk__in=[1,3,5])

# pub_dateを(昇順に)並び替えて選択
obj = Blog.objects.order_by('pub_date')

# pub_dateを(降順に)並び替えて選択
obj = Blog.objects.order_by('-pub_date')

0 件のコメント: