day1 ORM

ORM对象关系映射

映射关系:

     表名  <-------> 类名

       字段  <-------> 属性

    表记录 <------->类实例对象

class Customer(models.Model):
    '''客户信息表'''
    name = models.CharField(max_length=32,blank=True,null=True)
    qq = models.CharField(max_length=64,unique=True)
consult_course
= models.ForeignKey("Course",verbose_name="咨询课程") content = models.TextField(verbose_name="咨询详情") tags = models.ManyToManyField("Tag",blank=True,null=True,verbose_name="分类标签") status_choices = ((0,'已报名'), (1,'未报名'), ) status = models.SmallIntegerField(choices=status_choices,default=1) consultant = models.ForeignKey("UserProfile",verbose_name="学员顾问") memo = models.TextField(blank=True,null=True,verbose_name="备注") date = models.DateTimeField(auto_now_add=True) def __str__(self): return self.qq class Meta: verbose_name ="客户表" verbose_name_plural ="客户表"

 

admin.site.register(models.Customer)

 

 



 

 

模型字段参考文档

  http://python.usyiyi.cn/documents/django_182/ref/models/fields.html#manytomany-arguments

 

 字段类型

name = models.CharField(max_length=32)  #字符串  #限定字段的长度

memo = models.TextField(blank=True,null=True)    #大文本字段

date = models.DateField(auto_now_add=True)  #时间字段  #自动填充选项
start_date = models.DateField(verbose_name="开班日期")


amount = models.PositiveIntegerField(verbose_name="数额",default=500) #正整数字段   #0到2147483647的值

has_homework = models.BooleanField(default=True)         # true/false 字段


#可迭代的结构,列表或是元组     #显示选择框
status_choices = ((0,'已报名'),  
                      (1,'未报名'),
                      )
status = models.SmallIntegerField(choices=status_choices,default=1)  #正整数字段     #从0 到 32767 这个区间

 

 

关联字段

course = models.ForeignKey("Course",verbose_name="所报课程")  #多对一关系    #自动创建数据库索引   #Django 会在字段名上添加"_id" 来创建数据库中的列名


roles = models.ManyToManyField("Role",blank=True,null=True)   #多对多关联          #与ForeignKey 的工作方式完全一样

user = models.OneToOneField(User)   #一对一关联关系    #ForeignKey 设置了unique=True

 

 

字段选项

name = models.CharField(max_length=32,blank=True,null=True)
                                      #该字段允许为空白   #空值存储为NULL   (成对出现)
                  
    
name = models.CharField(unique=True,max_length=32,primary_key=True)
                        #表中必须有唯一值               #模型的主键字段
attendance = models.SmallIntegerField(choices=attendance_choices,default=0)     
                                                                 #字段的默认值0
                                                                                     
contract_approved = models.BooleanField(default=False,verbose_name="合同已审核")
                                                      #一个字段的可读性更高的名称

 

 

__str__()  (python3) 和   __unicode__() (python2.x)

方法定义了当object调用str()时应该返回的值
它以unicode方式返回任何对象的陈述。Python和Django需要输出字符串陈述时使用。
例如在交互式控制台或管理后台显示的输出陈述。
    def __str__(self):
        return "%s %s" %(self.customer,self.enrolled_class)

 

自定义字段类型    Meta 选项

    class Meta:
        unique_together = ('branch','course','semester')        #用来设置的不重复的字段组合,必须唯一(将两个字段做联合唯一)
        verbose_name = "班级"                      #指明一个易于理解和表述的对象名称,单数形式
        verbose_name_plural = "班级"                #对象的复数表述名:

 

posted @ 2017-11-04 22:50  venicid  阅读(186)  评论(0编辑  收藏  举报