最近在和朋友一起学习Django,首先简单学习一下它的Database API。
首先按照如下模型创建三个表:
from django.db import models
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def __str__(self):
return self.name
class Author(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField()
def __str__(self):
return self.name
class Entry(models.Model):
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
headline = models.charField(max_length=255)
body_text = models.TextField()
pub_date = models.DateField()
mod_date = models.DateField()
authors = models.ManyToManyField(Author)
n_comments = models.IntergerField()
n_pingbacks = models.IntegerField()
rating = models.IntegerField()
def __str__(self):
return self.headline
class EntryDetail(models.Model):
entry = models.OneToOneField(Entry, on_delete=models.CASCADE)
details = models.TextField()
创建对象
这里的创建对象相当于在表格中INSERT一条记录。
save
需遵循如下步骤:
1. 创建一个类的实例
2. 在这个实例上调用save()
>>> b1=Blog(name="Beatles Blog", tagline = "all the latest Beatles news.")
>>> b2=Blog(name="Sue Blog", tagline = "all latest news about Sue.")
>>> b3=Blog(name="Computer Science", tagline="Hello World!")
>>> b1.save()
>>> b2.save()
>>> b3.save()
create
调用Manager
的create()
(具体使用方法会在后面的文章中提到)
复制已有对象
将想复制的对象的pk
设为None
,然后save()
即可。
>>> b = Blog.objects.all().get(pk=4)
>>> b.pk = None
>>> b.save()
需要注意的是, 这种方法并不会复制对象的ManyToManyField
等属性,因此针对ManyToMany
的情况,我们可以:
entry = Entry.objects.all()[0]
>>> old_authors = entry.authors