Django模型Model的定义

Posted xcool

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django模型Model的定义相关的知识,希望对你有一定的参考价值。


  • 定义模型:在models.py文件中进行定义,一个数据表就是一个模型,如果数据库有三张表分别为student,info,grade,含义分别为,学生表,学生信息,班级信息,三张表之间有关联,学生与班级之间为1对多关系,学生与学生信息为1对1关系,模型中定义如下。

  • 定义student模型

class Grage(models.Model):
    g_name = models.CharField(max_length=10,unique=True) # 最大长度为10,班级名唯一
    class Meta:
        db_table = ‘grade‘  # 指定表名为grade,如果不指定,默认为应用名_grade
  • 定义student模型与班级1对多关系
class Student(models.Model):
    s_id = models.IntegerField(unique=True) # 定义学生学号,且学号唯一
    s_name = models.CharField(max_length=20) # 定义学生姓名,最大长度为20
    s_gender = models.BooleanField(default =1) # 定义学生性别,布尔类型,默认为1,True
    s_age = models.IntegerField() # 定义学生年龄
    create_time = models.DateTimeField(auto_now_add=True,null=True) # 定义创建时间,auto_now_add表示以当前时间创建,不会再改变,null=True表示默认为空,不写报错
    update_time = models.DateTimeField(auto_now=True,null=True)  #  定义修改时间,auto_now表示每一次修改,字段里的值就是当此修改的时间
    chinese = models.DecimalField(decimal_places=1,max_digits=4,null=True) # 定义语文成绩,decimal_places表示1位小数,max_digits=4表示最大4位有效,如123.5,允许为空
    math = models.DecimalField(decimal_places=1,max_digits=4,null=True) # 定义数学成绩
    grade = models.Foreginkey(Grade,null=True) # 定义外键约束,一个班级对应多个学生
    info = models.OneToOneField(Info,null=True) # 定义1对1关系,学生与学生信息
    class Meta:
        db_table = ‘student‘ # 指定表名为student
 
  • 定义info模型与学生1对1关系
class Info(models.Model):
    phone = models.CharField(max_length=10,null=True) # 定义手机号码,最大为11位
    address = models.CharField(max_length=50,null=True) # 定义地址,最大位50位
    class Meta:
        db_table = ‘info‘  # 指定表名

以上是关于Django模型Model的定义的主要内容,如果未能解决你的问题,请参考以下文章

Django模型Model的定义

django下model.py模型的定义

Django中模型

Django进阶Model篇002 - 模型类的定义

Django自定义模型(model)中的字段标签

Django - 从父母那里查询许多FK模型