Dango自学习6

来源:互联网 发布:html5影视cms系统 编辑:程序博客网 时间:2024/05/29 16:38

模型层

模型是你的数据的唯一,每个模型对应数据库中的唯一一个表.

1,每个模型都是django.db.models.Model的一个python子类

2,模型的每个属性都表示数据库中的一个字段

3,Django提供一套自动生成的用于数据库的访问的API


新建bob项目 myapp应用在myapp/models.py:

若多次改变其中一个类中的属性,在更新数据库操作中会出现错误:

选择1),然后输入timezone.now():

在shell进行数据库操作:

对于类中的主键一般是由Django自动建立的,也可以通过设置primary_key=True把当前属性作为主键.

例如:

自增属性字段为:

id=models.AutoField(primary_key=True)

字段的自述名:

一般情况下在没有指定自述名时---将属性的名称的下划线换位空格即为自述名

指定例子:

first_name=models.CharField("person's first name",max_length=30)

自述名即为person's first name

ForeignKey ManyToManyField 和OneToOneField都要求第一个参数是模型类,因此使用verbose_name关键字参数才能指定自述名

例如:

polls=models.ForeignKey(Poll,verbose_name="ok")

sites=models.ManyToManyField(Site,verbose_name='fine')

place=models.OneToOneField(Place,verbose_name="yes")


关系:

Django提供了三种关系:多对一关系 多对多关系 一对一关系

多对一关系:

Django使用django.db.models.ForignKey定义多对一关系例如:

当然可以创建递归的关联关系和尚未定义的模型关联关系

多对多关系:

ManyToManyField用来定义多对多关系,用法和其他Field字段类型一样:在模型类中作为一个属性包含进来

需要一个位置参数:和该模型关联的类

其和ForignKey的用法是一样的,多对多关系的其他字段:

例如:有这样的一个应用:它记录着音乐家所属的音乐小组.我们可以用一个ManyToManyField表示小组和成员之间的多对多关系,但是你想知道更多成员关系的细节,比如成员是何时加入小组的:

from django.db import models

class Person(models.Model):

        name=models.CharField(max_length=128)

        def __str__(self):

              return self.name

class Group(models.Model):

        name=models.CharField(max_length=128)

        members=models.ManyToManyField(Person,through="Membership")

        def __str__(self):

              return self.name

class Membership(models.Model):

        person=models.ForeignKey(Person)

        group=models.ForeignKey(Group)

        date_joined=models.DateField()

       invite_reason=models.CharField(max_length=64)

ManyToManyField字段将使用through参数指向中介模型(在这个例子中就是membership).在设置中介模型时,要显示的指定外键病关联到多对多关系涉及的模型.

接下来创建多对多关系,要做的就是创建中介模型实例:


0 0
原创粉丝点击