您的位置:首页 > 数据库

Django中的数据库模型类-models.py(多对多的关系)

2017-10-10 16:53 465 查看
# -*- 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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: