Django ManyToManyField多对多关系的实例详解
一、介绍
Django 的 ORM 有多种关系:一对一,多对一,多对多
各自定义的方式为 :
- 一对一: OneToOneField
- 多对一: ForeignKey
- 多对多: ManyToManyField
二、多对多的关系
举例: 现有两张表,user表和group表。user表中的字段有用户名,邮箱,年龄等信息。而group表中有组名信息。我们知道一个用户可以属于多个组,一个组中也可以包含多个用户,所以这两张表的关系就是多对多的关系。
mysite/learn/models.py文件代码
#coding:utf8
from django.db import models
class Group(models.Model):
Name = models.CharField(max_length=20)
def __unicode__(self):
return self.Name
class User(models.Model):
Name = models.CharField(max_length=20)
Email = models.CharField(max_length=50)
group = models.ManyToManyField(Group,blank=True)
def __unicode__(self):
return self.Name
def group_list(self):
return ','.join([i.Name for i in self.group.all()])
创建两张表Group和User,Group表中只有组名“Name”这一个字段。而User表中有用户名“Name”,邮箱“Email”,组名“group”三个字段。
在User表中,由于group信息与Group表关联的,所以要在User表中设置
ManyToManyField
def group_list(self):
return ','.join([i.Name for i in self.group.all()])
定义group_list函数,是为了在后台页面中显示group_list字段信息。group_list是后台页面显示的字段