码迷,mamicode.com
首页 > 其他好文 > 详细

django-多表关系/及操作

时间:2019-11-24 11:42:00      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:连接   foreign   映射   rom   har   wan   creat   auto   mode   

#表关系


##一对一
创建
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-多表关系/及操作

标签:连接   foreign   映射   rom   har   wan   creat   auto   mode   

原文地址:https://www.cnblogs.com/chenlulu1122/p/11921580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!