这两天,想帮公司搞个简单的员工管理系统,折腾了两天,查了很多方法,也走了很多弯路,本身自己学艺不精,不过还好,也折腾出来了,现在发表一下,自己的源码和遇到的坑,希望能帮助大家。
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']
![](https://img-blog.csdnimg.cn/403dafcbd62e47159bfc28f592153720.png)
apps/users/apps.py
from django.apps import AppConfig
class UsersConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'users'
verbose_name = '员工管理'
![](https://img-blog.csdnimg.cn/bea409cf6f0c46dd873b519e99a9f6a6.png)
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
![](https://img-blog.csdnimg.cn/467d4d0e72c24406b74bcd41f5771cf7.png)
department/__init__.py
![](https://img-blog.csdnimg.cn/9f225101241247efb782fe47ea6f6b95.png)
department/admin.py
![](https://img-blog.csdnimg.cn/73db0de2138c4a2b963cb5ffde50b2bc.png)
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
![](https://img-blog.csdnimg.cn/c62aad8960004a53aba5ee17f4e107e9.png)
这里,最核心的重要部分,是下图的红框处,具体意思,就自己查一下了
![](https://img-blog.csdnimg.cn/5eb9ff09aaec4c79a2901d0d191bebc7.png)