博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django数据库操作-增删改查-多对多关系以及一对多(外键)关系
阅读量:6710 次
发布时间:2019-06-25

本文共 1161 字,大约阅读时间需要 3 分钟。

一、一对多(外键)

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

model代码:

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.从作者出发获取书籍

person = Person.objects.fiter(你的条件)  book = person.book_set.all()

2.从书籍出发获取作者

p = book.person

 

二、多对多

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

model代码:

class Author(models.Model):        first_name = models.CharField(max_length=30)        last_name = models.CharField(max_length=40)        email = models.EmailField()            class Book(models.Model):        title = models.CharField(max_length=200)        authors = models.ManyToManyField(Author)

 

(一)获取对象方法:

1.从书籍出发获取作者

b = Book.objects.get(id=50)  b.authors.all()  b.authors.filter(first_name='Adam')

 

2.从作者出发获取书籍

a = Author.objects.get(id=1)  a.book_set.all()

 

 

(二)添加对象方法:

a = Author.objects.get(id=1)  b = Book.objects.get(id=50)  b.authors.add(a)

 

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

a = Author.objects.get(id=1)  b = Book.objects.get(id=50)  b.authors.remove(a) 或者 b.authors.filter(id=1).delete()

 

转载地址:http://xfalo.baihongyu.com/

你可能感兴趣的文章
Android中Bitmap、Drawable、byte[]转换
查看>>
[杂记]是否有必要精通unix的shell语法?
查看>>
Oracle 数据类型及存储方式(二)
查看>>
UNIX时间戳的应用-JAVA
查看>>
Intelij 中javax.servlet.http.HttpServlet包导不进来
查看>>
dynamic disk无损转为basic disk
查看>>
SoftReference缓存图片
查看>>
PHP关闭(禁止)脚本错误提示的方法及让脚本错误提示输出为日志文件的方法
查看>>
URAL 1013 K-based Numbers. Version 3
查看>>
[转]请记住别拿自己跟别人比较
查看>>
srl16e verilog
查看>>
硬笔书法练习
查看>>
带您走进七周七语言的程序世界
查看>>
Stream和Reader、Writer对象学习
查看>>
Boost简介
查看>>
计算机常用端口一览表:
查看>>
Android 自带图标库 android.R.drawable
查看>>
HTTP Error: status code 302. I/O Error: Error #2038. ckfinder报错
查看>>
java.util.Date和java.sql.Date的区别和相互转化
查看>>
selenium面试题总结
查看>>