标签:文件夹 简历 元类 字符 mysql 通过 eai 指定表 数据库
模型类的对应关系
多对多
创建模型类----->新闻类型类
class TypeInfo(models.Model):
    	"""创建新闻模型类"""
    	tname = models.CharField(max_length=20)
创建模型类----->新闻内容类
class NewInfo(models.Model):
    	"""闯将新闻内容类"""
   	ntitle = models.CharField(max_length=20)
    	npub_date = models.DateTimeField(auto_now_add=True)
    	ncontent = models.FileField()
    	# 建立多对多的关系
    	ntype = models.ManyToManyField("TypeInfo")
总结:
一对多
总结(一)当中图书和英雄的案例则为一对多的关系
		创建语句写在多的模型类当中
hbook = models.ForeignKey("BookInfo")
总结:
创建表后关联字段名称为----关联属性_id
一对一
class Student(models.Model):
     """建立学生基本信息模型类"""
     sname = models.CharField(max_length=20)
     sage = models.IntegerField()  
class StuInfo(models.Model):
   	"""简历学生的详细信息类一对一的关系"""
    	scontent = models.CharField(max_length=200)
    	stu = models.OneToOneField("Student")
总结:
创建语句写在哪一个模型类当中都可以
自关联
描述:
自关联是一种特殊的一对多的关系。
例:显示广州市的上级地区和下级地区。
地区表:id, title, parent
class AreaInfo(models.Model):
    """创建地区模型类"""
    atitle = models.CharField(max_length=20)
    aparent = models.ForeignKey("self", null=True, blank=True)
导入数据信息
	注意:导入数据时需要从areas.sql的当前所在文件夹进入数据库
	mysql终端中批量执行sql语句:
source areas.sql;
案例:
def area(request):
    """地区示例"""
    # 1.获取当前那的地区
    # 2.id为440100的市为哪个省的
    # 3.id为440100的市里面有那些区
    area = AreaInfo.objects.get(id=440100)
    方法一:
    parent = area.aparent
    children = area.areainfo_set.all()
    方法二:
    parent = AreaInfo.objects.filter(areainfo__id=440100)
    children = AreaInfo.objects.filter(aparent__id=440100)
    return render(request, "booktest/area.html", {"area": area, "parent": parent, "children": children})
模型管理器:
BookInfo.objects.all()->objects是一个什么东西呢?
	答:objects是Django帮我自动生成的管理器,通过这个管理器可以实现对数据的查询。
		objects是models.Manger类的一个对象。自定义管理器之后Django不再帮我们生成默认的objects管理器。
自定义模型管理器:
自定义管理器类的应用场景:
			    管理器类中定义一个方法帮我们创建对应的模型类对象。
			    使用self.model()就可以创建一个跟自定义管理器对应的模型类对象。
例:
class BookInfoManage(models.Manager):
  	"""继承模型管理器类"""
    def all(self):
      	# 调用父类的__init__方法1(python2)
       	# Cat.__init__(self,name)
       	# 调用父类的__init__方法2
       	# super(Bosi,self).__init__(name)
       	# 调用父类的__init__方法3---->此方法为python3的方法
       	# super().__init__(name)
       	# books = models.Manager.all(self)
       	# books = super(models.Manager, self).all()
       	# books = super().all(self)
       	books = super(models.Manager, self).all()
       	books = books.filter(isDelete=0)
       	return books
     def create_book(self, btitle, bpub_date):
        """自定义添加数据的方法"""
       	b = BookInfo()
       	# 方法二:此方法的优点,当模型的类名修改时不需要随之修改名字
        # b = self.model()
        b.btitle = btitle
        b.bpub_date = bpub_date
        b.bread = 0
        b.bcomment = 0
        b.save()
自定义模型管理器的好处
元选项
django默认生成的表名为 应用的名字_模型类的类名可以通过元选项的操作给表指定表名
		需要在模型类中定义一个元类Meta,在里面定义一个类属性db_table就可以指定表名。
		例:
class Meta():
    """自定一表名"""
    db_table = "bookinfo"
    # 注意是定义在模型类的里面
查询集:
返回查询集的过滤器如下:
返回单个值的过滤器如下:
查询集的两大特性:
限制查询集:
模型类属性
属性命名限制:
格式:
属性=models.字段类型(选项)使用时需要引入django.db.models包,字段类型如下:
选项:
Django中ORM模型总结(二)[模型类的对应关系,模型类的属性,字段类型]
标签:文件夹 简历 元类 字符 mysql 通过 eai 指定表 数据库
原文地址:http://www.cnblogs.com/kayb/p/7255408.html