这两天,想帮公司搞个简单的员工管理系统,折腾了两天,查了很多方法,也走了很多弯路,本身自己学艺不精,不过还好,也折腾出来了,现在发表一下,自己的源码和遇到的坑,希望能帮助大家。
- 一、先放源码
djangoProject3/settings.py
INSTALLED_APPS = [ 'users.apps.UsersConfig', 'department.apps.DepartmentConfig', ]
users/__init__.py
default_app_config = 'users.apps.UsersConfig'
apps/users/admin.py
from django.contrib import admin from .models import UserProfile # Register your models here. @admin.register(UserProfile) class AdminUserProfile(admin.ModelAdmin): list_display = ['name']
apps/users/apps.py
from django.apps import AppConfig class UsersConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'users' verbose_name = '员工管理'
users/models.py
from django.db import models # 员工信息表 class UserProfile(models.Model): user_id = models.CharField(unique=True, max_length=30, verbose_name='员工编号') # 姓名可以为空是为了用户登陆的时候,只用手机号+验证码登陆,不报错 name = models.CharField(max_length=30, verbose_name='员工姓名', null=True, blank=True) department = models.ForeignKey(to="department.Departments", to_field='dep_name', on_delete=models.CASCADE, related_name='department_id', verbose_name='部门名称') join_time = models.DateTimeField(verbose_name='入职日期', null=True, blank=True) birthday = models.DateTimeField(verbose_name='出生日期', null=True, blank=True) user_type = models.CharField(max_length=10, choices=(('DL', '生产员工'), ('IDL', '管理员工')), default='DL', verbose_name='员工类型') gender = models.CharField(max_length=10, choices=(('girl', '女'), ('boy', '男')), default='girl', verbose_name='性别') mobile = models.CharField(max_length=11, verbose_name='手机号') email = models.EmailField(max_length=100, null=True, blank=True, verbose_name='邮箱') add_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间') class Meta: db_table = 'users_userprofile' verbose_name = '员工信息表' verbose_name_plural = verbose_name # 用户输入的验证码 class VerifyCode(models.Model): code = models.CharField(max_length=10, verbose_name='验证码') # 1:邮箱验证,2:手机短信验证 verify_type = models.SmallIntegerField(verbose_name='验证码类型') mobile = models.CharField(max_length=11, verbose_name='手机号') add_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间') class Meta: verbose_name = '验证码' verbose_name_plural = verbose_name
department/__init__.py
department/admin.py
from django.apps import AppConfig class DepartmentConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'department' verbose_name = '部门管理'
from django.db import models departments = ( ('注塑部', '注塑部'), ('移印部', '移印部'), ('包装部', '包装部'), ('采购部', '采购部'), ('货仓部', '货仓部'), ('品质部', '品质部'), ('货仓部', '货仓部'), ('人事部', '人事部'), ('行政部', '行政部'), ('电脑部', '电脑部'), ('维修部', '维修部'), ('超声部', '超声部') ) # 部门表 class Departments(models.Model): dep_id = models.CharField(max_length=30, verbose_name='部门编号', unique=True) dep_name = models.CharField(choices=departments, default='1', max_length=30, verbose_name='部门名称', unique=True) dep_leader = models.CharField(max_length=20, verbose_name='部门主管') dep_position = models.CharField(max_length=20, verbose_name='部门位置') dep_phone = models.CharField(max_length=20, verbose_name='部门电话') add_time = models.DateTimeField(auto_created=True, verbose_name='创建时间') update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间') class Meta: verbose_name = '部门信息表' verbose_name_plural = verbose_name def __str__(self): return self.dep_name
这里,最核心的重要部分,是下图的红框处,具体意思,就自己查一下了