django数据库操作-增删节查-多对多关系以及一对多(外键)关系
django数据库操作-增删改查-多对多关系以及一对多(外键)关系
django数据库操作-增删改查-多对多关系以及一对多(外键)关系
(2012-10-04 20:31:09)转载▼
标签:
杂谈 |
分类: python_django |
一、一对多(外键)
例子:一个作者对应多本书,一本书只有一个作者
model代码:
[python] view plaincopy
- class
Person(models.Model); - name
= models.CharField('作者姓名', max_length= 10)- age
= models.IntegerField('作者年龄') - class
Book(models.Model): - person
= models.ForeignKey(Person, related_name='person_book') - title
= models.CharField('书籍名称', max_length= 10)- pubtime
= models.DateField('出版时间') (一)获取对象方法:
1.从作者出发获取书籍
[python] view plaincopy
- person
= Person.objects.fiter(你的条件) - book
= person.book_set.all()
2.从书籍出发获取作者
[python] view plaincopy
- p
= book.person
二、多对多
例子:一个作者对应多本书,一本书有多个作者
model代码:
[python] view plaincopy
- class
Author(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=40) = models.EmailField() - class
Book(models.Model): title = models.CharField(max_length=200) authors = models.ManyToManyField(Author)
(一)获取对象方法:
1.从书籍出发获取作者
[python] view plaincopy
- b
= 50)Book.objects.get(id= - b.authors.all()
- b.authors.filter(first_name='Adam')
2.从作者出发获取书籍
[python] view plaincopy
- a
= 1)Author.objects.get(id= - a.book_set.all()
(二)添加对象方法:
[python] view plaincopy
- a
= 1)Author.objects.get(id= - b
= Book.objects.get(id=50) - b.authors.add(a)
(三)删除对象对象方法:
[python] view plaincopy
- a
= 1)Author.objects.get(id= - b
= Book.objects.get(id=50) - b.authors.remove(a)
或者 b.authors.filter(id=1).delete()