Django学习 - day7 - 图1
    负情绪是真的烦人,要是每天都单纯的像个孩子就好啦!
    社会有时候真的好复杂,每个人的情绪都会相互影响,努力保持自己吧!
    今天的内容是创建一个models,附上代码 (知识点呢)

    • unique代表唯一
    • 当字段为int时,如果要求可为空,则需要blank=true,和null = true
    • choices为选择器
    • DecimalField为支持固定精度的十进制数,有decimal_places代表小数位,max_digits代表整数最大位
    • 定义Meta ,比如表名,所有非字段的东西都在这里定义!详见丢下方
    • 其他详见 https://docs.djangoproject.com/zh-hans/4.0/ref/models/fields/#
    1. FIRST_INTERVIEW_RESULT_TYPE = ((u'建议复试', u'建议复试'), (u'待定', u'待定'), (u'放弃', u'放弃'))
    2. INTERVIEW_RESULT_TYPE = ((u'建议录用', u'建议录用'), (u'待定', u'待定'), (u'放弃', u'放弃'))
    3. DEGREE_TYPE = ((u'本科', u'本科'), (u'研究所', u'研究所'), (u'博士', u'博士'))
    4. HR_SCORE_TYPE = ((u'S', u'S'), (u'A', u'A'), (u'B', u'B'))
    5. class Candidate(models.Model):
    6. # 基础信息
    7. userid = models.IntegerField(unique=True, blank=True, null=True, verbose_name=u'应聘者id')
    8. username = models.CharField(max_length=135, verbose_name=u'应聘者昵称')
    9. city = models.CharField(max_length=135, verbose_name=u'应聘者城市')
    10. phone = models.CharField(max_length=135, verbose_name=u'应聘者手机号')
    11. email = models.EmailField(max_length=135, blank=True, verbose_name=u'应聘者邮箱')
    12. apply_position = models.CharField(max_length=135, blank=True, verbose_name=u'应聘者职位')
    13. born_address = models.CharField(max_length=135,blank=True, verbose_name=u'应聘者生源地')
    14. gender = models.CharField(max_length=135, verbose_name=u'性别')
    15. candidate_remark = models.CharField(max_length=135, blank=True, verbose_name=u'候选人信息备注')
    16. # 学校与学历信息
    17. bachelor_school = models.CharField(max_length=135, blank=True, verbose_name=u'本科学校')
    18. master_school = models.CharField(max_length=135, blank=True, verbose_name=u'研究所学校')
    19. doctor_school = models.CharField(max_length=135, blank=True, verbose_name=u'博士生学校')
    20. major = models.CharField(max_length=135, blank=True, verbose_name=u'专业')
    21. degree = models.CharField(max_length=135,choices=DEGREE_TYPE, blank=True, verbose_name=u'应聘者昵称')
    22. # 综合能力测评成绩,笔记成绩
    23. test_score_of_general_ability = models.DecimalField(decimal_places=1, null=True, max_digits=3, blank=True,
    24. verbose_name=u'综合能力测评成绩')
    25. paper_score = models.DecimalField(decimal_places=1, null=True, max_digits=3, blank=True, verbose_name=u'笔试成绩')
    26. # 第一轮面试记录
    27. first_score = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True, verbose_name=u'初试分')
    28. first_learning_ability = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
    29. verbose_name=u'学习能力得分')
    30. first_professional_competency = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
    31. verbose_name=u'专业能力得分')
    32. first_disadvantage = models.TextField(max_length=1024, blank=True, verbose_name=u'顾虑和不足')
    33. first_advantage = models.TextField(max_length=1024, blank=True, verbose_name=u'优势')
    34. first_result = models.CharField(max_length=256, choices=FIRST_INTERVIEW_RESULT_TYPE, blank=True,
    35. verbose_name=u'初试结果')
    36. first_recommend_position = models.CharField(max_length=256, blank=True, verbose_name=u'推荐部门')
    37. first_interviewer = models.CharField(max_length=256, blank=True, verbose_name=u'面试官')
    38. first_remark = models.CharField(max_length=135, blank=True, verbose_name=u'初试备注')
    39. # 第二轮面试记录
    40. second_score = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True, verbose_name=u'复试分')
    41. second_learning_ability = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
    42. verbose_name=u'学习能力得分')
    43. second_professional_competency = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
    44. verbose_name=u'专业能力得分')
    45. second_pursue_of_excellence = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
    46. verbose_name=u'追求卓越得分')
    47. second_communication_ability = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
    48. verbose_name=u'沟通能力得分')
    49. second_pressure_score = models.DecimalField(decimal_places=1, null=True, max_digits=2, blank=True,
    50. verbose_name=u'抗压能力得分')
    51. second_disadvantage = models.TextField(max_length=1024, blank=True, verbose_name=u'顾虑和不足')
    52. second_advantage = models.TextField(max_length=1024, blank=True, verbose_name=u'优势')
    53. second_result = models.CharField(max_length=256, choices=FIRST_INTERVIEW_RESULT_TYPE, blank=True,
    54. verbose_name=u'复试结果')
    55. second_recommend_position = models.CharField(max_length=256, blank=True, verbose_name=u'推荐部门')
    56. second_interviewer = models.CharField(max_length=256, blank=True, verbose_name=u'面试官')
    57. second_remark = models.CharField(max_length=135, blank=True, verbose_name=u'复试备注')
    58. # HR终面
    59. hr_score = models.CharField(max_length=10, choices=DEGREE_TYPE, blank=True, verbose_name=u'HR复试综合等级')
    60. hr_responsibility = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'责任心')
    61. hr_communication_ability = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'坦诚沟通')
    62. hr_logic_ability = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'逻辑思维')
    63. hr_potential = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'发展潜力')
    64. hr_stability = models.CharField(max_length=10, choices=HR_SCORE_TYPE, blank=True, verbose_name=u'稳定性')
    65. hr_disadvantage = models.TextField(max_length=1024, blank=True, verbose_name=u'顾虑和不足')
    66. hr_advantage = models.TextField(max_length=1024, blank=True, verbose_name=u'优势')
    67. hr_result = models.CharField(max_length=256, choices=FIRST_INTERVIEW_RESULT_TYPE, blank=True,
    68. verbose_name=u'HR复试结果')
    69. hr_interviewer = models.CharField(max_length=256, blank=True, verbose_name=u'HR面试官')
    70. hr_remark = models.CharField(max_length=135, blank=True, verbose_name=u'HR复试备注')
    71. creator = models.CharField(max_length=256, blank=True, verbose_name=u'候选人数据的创建人')
    72. created_data = models.DateTimeField(auto_now_add=True, blank=True, verbose_name=u'创建时间')
    73. modified_date = models.DateTimeField(auto_now=True, blank=True, verbose_name=u'更新时间')
    74. last_editor = models.CharField(max_length=256, blank=True, verbose_name=u'最后编辑者')
    75. class Meta:
    76. db_table = u'candidate'
    77. verbose_name = u'应聘者'
    78. verbose_name_plural = u'应聘者'
    79. # 当我们把这个对象转换成字符串的时候,就直接调用这个函数的返回值,使用候选人的名字,作为展示对象
    80. def __str__(self):
    81. return self.username

    Meta:
    模型的元数据即“所有不是字段的东西”,比如排序选项( ordering ),数据库表名( db_table ),或是阅读友好的单复数名( verbose_nameverbose_name_plural )。这些都不是必须的,并且在模型当中添加 Meta类 也完全是可选的。
    具体在 https://docs.djangoproject.com/zh-hans/4.0/ref/models/options/ 里面有所有的可选项

    1. from django.db import models
    2. class Ox(models.Model):
    3. horn_length = models.IntegerField()
    4. class Meta:
    5. ordering = ["horn_length"]
    6. verbose_name_plural = "oxen"