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 = "班级" #对象的复数表述名:

最新文章

  1. [Q&amp;A] 远程过程调用失败。[0x800706be]
  2. AngularJS--自定义指令和模板
  3. linux git的安装与使用
  4. python数据结构与算法——哈希表
  5. AC日记——合法C标识符 openjudge 1.7 06
  6. 让 Popwindow 向上弹出
  7. iOS 一个工程中引用其他工程时要注意Skip Install选项
  8. 161124、Java 异常处理的误区和经验总结
  9. prettyprint
  10. 打印从1到k之间的所有素数
  11. C# 调用浏览器打开网址
  12. 哲学家用餐问题的几个解法(c语言实现)
  13. 模式识别 - 处理多个演示样本研究(MIL)特点(matlab)
  14. OC——多态
  15. Div+CSS+JQuery实现选项卡,即通过点击不同的li跳转到不同的div中显示不同的内容或者执行不同的操作。
  16. python中常用模块
  17. VS2015 怎么安装RDLC报表模板?
  18. GitHub命令更新
  19. 2017-2018-2 20165236 实验四《Android开发基础》实验报告
  20. Calendar的使用注意

热门文章

  1. java BigDecimal解析及注意事项
  2. Mysql中函数和存储过程的区别
  3. POJ2074 Line of Sight
  4. Kali-linux密码在线破解
  5. jquery全选 反选
  6. 关于ie8下监听input事件的不兼容问题。
  7. 搞懂JVM类加载机制
  8. JNI由浅入深_4_JNI基础知识详解
  9. 在 S5PV210 的 开发板上 点亮 一个 LED 灯
  10. html标签种类