zoukankan      html  css  js  c++  java
  • 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 = "班级"                #对象的复数表述名:
  • 相关阅读:
    简单工厂,工厂方法和抽象工厂
    谈谈类之间的关联关系与依赖关系(转载)
    redis-cli 命令操作 Redis 五种数据类型
    深入分析java中的反射机制
    深入分析Java中String、StringBuilder、StringBuffer的区别
    String类型为什么设计成不可变的?
    java集合系列(5)LinkedList
    java集合系列(4)fail-fast机制(面试常问)
    java集合系列(3)ArrayList
    java集合系列(2)collection
  • 原文地址:https://www.cnblogs.com/venicid/p/7784955.html
Copyright © 2011-2022 走看看