# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models # Create your models here. # 多对多关系 # 例子:一个出版社可以发表多个文章,一篇文章也可以被多个出版社发表 # ManyToManyFiled():关联俩个表的函数,但是函数的设置位置在模型中任选一个即可,不能俩个模型中都设置此函数 class Publication(models.Model): id = models.AutoField(primary_key=True,verbose_name=u'主键') title = models.CharField(max_length=30,null=True,blank=True,verbose_name=u'出版社名称') class Meta: db_table = 'publication' def __unicode__(self): return 'publication-name:%s'%self.title class Article(models.Model): id = models.AutoField(primary_key=True,verbose_name=u'主键') headline = models.CharField(max_length=100,null=True,verbose_name=u'文章标题') # 让文章关联出版社 publication = models.ManyToManyField(Publication,verbose_name=u'外键') class Meta: db_table = 'article' def __unicode__(self): return 'article_name:%s'%self.headline # 注意点: # 1>注意ManyToManyField()的设置位置;该实例中设置在了Article模型中,在绑定俩张表的关系时,利用的是Article的对象a1进行绑定的,a1.publication.add()。但是不能使用Publication的对象p1进行绑定(p1.article.add()) # 2> # 俩张表之间的相互查询关系 # 查询a1这篇文章,所属的出版社有哪些 # print a1.publication.all() # 查询某一个出版社所包含的所有文章有哪些 # print p1.article_set.all()
Django中的数据库模型类-models.py(多对多的关系)
最新推荐文章于 2018-04-19 10:39:36 发布