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-多表关系/及操作的主要内容,如果未能解决你的问题,请参考以下文章

django的多表操作

Django 基础 之ORM多表操作

Django之模型层-多表操作

web框架开发-Django模型层-多表操作

Django基础五之django模型层多表操作

Django ORM 多表操作