读书人

django数据库操作-增删节查-多对多关系

发布时间: 2012-11-04 10:42:42 作者: rapoo

django数据库操作-增删改查-多对多关系以及一对多(外键)关系

django数据库操作-增删改查-多对多关系以及一对多(外键)关系 (2012-10-04 20:31:09)django数据库操作-增删节查-多对多关系以及一对多(外键)关系转载标签:

杂谈分类: python_django

一、一对多(外键)

例子:一个作者对应多本书,一本书只有一个作者

model代码:

[python] view plaincopy
  1. class Person(models.Model);
  2. name = models.CharField('作者姓名', max_length=10)
  3. age = models.IntegerField('作者年龄')
  4. class Book(models.Model):
  5. person = models.ForeignKey(Person, related_name='person_book')
  6. title = models.CharField('书籍名称', max_length=10)
  7. pubtime = models.DateField('出版时间')

(一)获取对象方法:

1.从作者出发获取书籍

[python] view plaincopy
  1. person = Person.objects.fiter(你的条件)
  2. book = person.book_set.all()

2.从书籍出发获取作者

[python] view plaincopy
  1. p = book.person

二、多对多

例子:一个作者对应多本书,一本书有多个作者

model代码:

[python] view plaincopy
  1. class Author(models.Model):
  2. first_name = models.CharField(max_length=30)
  3. last_name = models.CharField(max_length=40)
  4. email = models.EmailField()
  5. class Book(models.Model):
  6. title = models.CharField(max_length=200)
  7. authors = models.ManyToManyField(Author)

(一)获取对象方法:

1.从书籍出发获取作者

[python] view plaincopy
  1. b = Book.objects.get(id=50)
  2. b.authors.all()
  3. b.authors.filter(first_name='Adam')

2.从作者出发获取书籍



[python] view plaincopy
  1. a = Author.objects.get(id=1)
  2. a.book_set.all()

(二)添加对象方法:

[python] view plaincopy
  1. a = Author.objects.get(id=1)
  2. b = Book.objects.get(id=50)
  3. b.authors.add(a)


(三)删除对象对象方法:

[python] view plaincopy
  1. a = Author.objects.get(id=1)
  2. b = Book.objects.get(id=50)
  3. b.authors.remove(a) 或者 b.authors.filter(id=1).delete()

读书人网 >其他数据库

热点推荐