问题
- 已经有内部系统在运行 缺少管理功能,希望能有一个权利后台。
比如 人事系统,CRM,ERP 的产品,缺少部分数据的维护功能
诉求
- 3分钟生成一个管理后台;
- 可以灵活定制页面;
- 不影响正在运行的业务系统
为已有数据库生成管理后台
思路
- 创建项目:
django-admin startproject empmanage - 编辑 settings.py 中的数据库配置, vim ~/settings.py
- 创建应用
python3 manage.py startapp candidates - 注册应用 candidates 修改settings添加APP
- 生成 model 类: ./manage.py inspectdb > models.py
- 注册 model 类
- 不要同步数据库 直接启动服务
empmanage/settings.py
ALLOWED_HOSTS = ['172.31.7.188', '172.31.7.188:8000']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dj',
'USER': 'root',
'PASSWORD': 'rootroot',
'HOST': '127.0.0.1',
'PORT': '3306',
'charset': 'utf8mb4',
}
}
python3 manage.py inspectdb > candidates/models.py
vim empmanage/candidates/models.py 只保留需要暴露的表
from django.db import models
from django.contrib.auth.models import User as AuthUser
class Candidate(models.Model):
userid = models.IntegerField(primary_key=True)
username = models.CharField(max_length=135)
city = models.CharField(max_length=135)
phone = models.CharField(max_length=135)
email = models.CharField(max_length=135)
apply_position = models.CharField(max_length=135)
born_address = models.CharField(max_length=135)
gender = models.CharField(max_length=135)
candidate_remark = models.CharField(max_length=135)
bachelor_school = models.CharField(max_length=135)
master_school = models.CharField(max_length=135)
doctor_school = models.CharField(max_length=135)
major = models.CharField(max_length=135)
degree = models.CharField(max_length=135)
test_score_of_general_ability = models.DecimalField(max_digits=3, decimal_places=1, blank=True, null=True)
paper_score = models.DecimalField(max_digits=3, decimal_places=1, blank=True, null=True)
first_score = models.DecimalField(max_digits=2, decimal_places=1, blank=True, null=True)
first_learning_ability = models.DecimalField(max_digits=2, decimal_places=1, blank=True, null=True)
first_professional_competency = models.DecimalField(max_digits=2, decimal_places=1, blank=True, null=True)
first_advantage = models.TextField()
first_disadvantage = models.TextField()
first_result = models.CharField(max_length=256)
first_recommend_position = models.CharField(max_length=256)
first_interviewer_user = models.ForeignKey(AuthUser, models.DO_NOTHING, blank=True, null=True)
first_remark = models.CharField(max_length=135)
second_score = models.DecimalField(max_digits=2, decimal_places=1, blank=True, null=True)
second_learning_ability = models.DecimalField(max_digits=2, decimal_places=1, blank=True, null=True)
second_professional_competency = models.DecimalField(max_digits=2, decimal_places=1, blank=True, null=True)
second_pursue_of_excellence = models.DecimalField(max_digits=2, decimal_places=1, blank=True, null=True)
second_communication_ability = models.DecimalField(max_digits=2, decimal_places=1, blank=True, null=True)
second_pressure_score = models.DecimalField(max_digits=2, decimal_places=1, blank=True, null=True)
second_advantage = models.TextField()
second_disadvantage = models.TextField()
second_result = models.CharField(max_length=256)
second_recommend_position = models.CharField(max_length=256)
second_interviewer_user = models.ForeignKey(AuthUser, models.DO_NOTHING, blank=True, null=True)
second_remark = models.CharField(max_length=135)
hr_score = models.CharField(max_length=10)
hr_responsibility = models.CharField(max_length=10)
hr_communication_ability = models.CharField(max_length=10)
hr_logic_ability = models.CharField(max_length=10)
hr_potential = models.CharField(max_length=10)
hr_stability = models.CharField(max_length=10)
hr_advantage = models.TextField()
hr_disadvantage = models.TextField()
hr_result = models.CharField(max_length=256)
hr_interviewer_user = models.ForeignKey(AuthUser, models.DO_NOTHING, blank=True, null=True)
hr_remark = models.CharField(max_length=256)
creator = models.CharField(max_length=256)
created_date = models.DateTimeField()
modified_date = models.DateTimeField(blank=True, null=True)
last_editor = models.CharField(max_length=256)
class Meta:
managed = False
db_table = 'candidate'
class JobsJob(models.Model):
job_type = models.SmallIntegerField()
job_name = models.TextField()
job_city = models.SmallIntegerField()
job_responsibility = models.TextField()
job_requirement = models.TextField()
creator = models.ForeignKey(AuthUser, models.DO_NOTHING, blank=True, null=True)
created_date = models.DateTimeField()
modified_date = models.DateTimeField()
class Meta:
managed = False
db_table = 'jobs_job'
managed = False 防止反向修改数据库
注册到admin中
empmanage/candidates/admin.py
from django.contrib import admin
# Register your models here.
from .models import JobsJob, Candidate
admin.site.register(JobsJob)
admin.site.register(Candidate)