You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
3.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from django.db import models
genders = [
('m', ''),
('f', '')
]
# forms.Form: 继承该表单类去创建自己需要的表单
# 添加学生模型
class Student(models.Model):
name = models.CharField(max_length=50, verbose_name="姓名")
gender = models.CharField(max_length=10, choices=genders, default='m', verbose_name="性别")
birthday = models.DateField(verbose_name='生日')
email = models.EmailField(verbose_name="邮箱")
info = models.CharField(max_length=255, verbose_name='个人简介', help_text='一句话概括自己不超过250字')
grade = models.CharField(max_length=4, verbose_name='年级')
number = models.CharField(max_length=20, verbose_name='级内学号')
password = models.CharField(max_length=30, verbose_name='密码')
class Meta:
constraints = [
# 学生年级号为4位数字组成的字符串年级下子学号为6位数字组成的字符串。
models.UniqueConstraint(fields=['grade', 'number'], name='student_id')
]
def get_id(self):
# 这两个连接起来组成学生的唯一学号,该学号也为其登录使用的账号。
# 复合主键:保证 grade和number组合的student_id唯一
return "%s%s" % (self.grade, self.number)
def __str__(self):
return "%s (%s)" % (self.get_id(), self.name)
# 添加老师模型
class Teacher(models.Model):
# verbose_name: 可读名前端展示form表单时为该属性用的表头文本。如果不设置则将使用本字段属性名即变量名自动创建它将下划线转换为空格
# CharField最常用的字符串类型字段,额外的必需参数max_length: 字段的最大长度(字符)。
name = models.CharField(max_length=50, verbose_name="姓名")
# choices: 给Field指定可以选择的值比如性别字段一般只能选择男或者女默认为None
# default: 默认值默认为False
gender = models.CharField(max_length=10, choices=genders, default='m', verbose_name="性别")
birthday = models.DateField(verbose_name='生日')
email = models.EmailField(verbose_name='邮箱')
# help_text: 与表单部件一起显示的辅助信息文本常常用于提示字段输入格式可以写HTML
info = models.CharField(max_length=255, verbose_name='教师简介', help_text='不要超过250字')
department_no = models.CharField(max_length=3, verbose_name='院系号')
number = models.CharField(max_length=7, verbose_name='院内编号')
password = models.CharField(max_length=30, verbose_name='密码')
class Meta:
constraints = [
# unique: 是否唯一默认为False。
# UniqueConstraint是一个唯一约束其中fields和name都是必须要设置的参数
# fields :字段名列表,指定哪几个字段名要满足唯一约束。
models.UniqueConstraint(fields=['department_no', 'number'], name='teacher_id')
]
# python manage.py makemigrations 生成空的databasedb.sqlite3 让 Django 知道我们在我们的模型有一些变更
# python manage.py migrate 更新到数据库文件/创建表结构
def get_id(self):
# 老师院系号为3位数字组成的字符串院内编号为7位数字组成的字符串。
# 这两个连接起来组成老师的唯一教师号,该教师号也为其登录使用的账号。
return "%s%s" % (self.department_no, self.number)
def __str__(self):
return "%s (%s)" % (self.get_id(), self.name)