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()

猜你喜欢

转载自www.cnblogs.com/chenlulu1122/p/11921580.html