django-多表关系/及操作
Posted chenlulu1122
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-多表关系/及操作相关的知识,希望对你有一定的参考价值。
#表关系
##一对一
创建
from django.db import models
class Author(models.Model):
name = models.CharField(‘姓名‘, max_length=50)
class Wife(models.Model):
name = models.CharField(‘姓名‘, max_length=50)
age = models.IntegerField(‘年龄‘, default=1)
author = models.OneToOneField(Author)
插入数据
a=Author.objects.create(name=‘chen‘)
w=Wife.objects.create(name=‘chenwife‘,age=20,author=a) #autho连接Author对象
w=Wife.objects.create(name=‘chenwife‘,age=20,author_id=a.id) #库内映射字段author_id连接Author对象id:a.id
查询
w.author.name #w.author author连接Author对象
a.wife.name #django 自带创立 Wife表的小写
##一对多
创建
class Pub(models.Model):
name = models.CharField(‘出版社名称‘, max_length=50)
class Shu(models.Model):
name = models.CharField(‘书名‘, max_length=50)
date = models.DateTimeField(‘出版时间‘, auto_now=True)
pub = models.ForeignKey(Pub)
插入数据:
p=Pub.objects.create(name=‘清华大学出版社‘)
s=Shu.objects.create(name=‘Jave‘,pub=p)
s1=Shu.objects.create(name=‘python‘,pub_id=p.id)
查询:
s.pub.name #查询书的出版社
p.shu_set.all() #查询出版社出版的所有书
p.shu_set.fieter() #条件查询
##多对多
创建
class Author(models.Model):
name = models.CharField(‘姓名‘, max_length=50)
class Book(models.Model):
title = models.CharField(‘名字‘, max_length=50)
author = models.ManyToManyField(Author)
插入数据
a1=Author.objects.create(name=‘wang‘)
a2=Author.objects.create(name=‘zhao‘)
a3=Author.objects.create(name=‘li‘)
a1.book_set.create(title=‘python‘) #通过主表插入从表内容
b1=Book.objects.create(title=‘java‘)
a1.boo_set.add(b1)
查询
a1.book_set.filter()
b1.author.filter()
以上是关于django-多表关系/及操作的主要内容,如果未能解决你的问题,请参考以下文章