您的位置:首页 > 编程语言 > Python开发

Python开发【Django】:Admin配置管理

2017-02-28 10:24 573 查看

Admin创建登录用户

数据库结构表:

from django.db import models

# Create your models here.

class UserProfile(models.Model):
'''
用户信息
'''
name = models.CharField(u'姓名',max_length=32)
email = models.EmailField(u'邮箱')
telephone = models.CharField(u'座机',max_length=32)
mobile = models.IntegerField(u'手机')

class Meta:
verbose_name_plural =  '用户信息表'


settings文件注册app,然后执行命令:

C:\Users\L\PycharmProjects\s14\homework\CmdbManage>python manage.py makemigrations
C:\Users\L\PycharmProjects\s14\homework\CmdbManage>python manage.py migrate


admin.py文件中注册modlels:

from django.contrib import admin
from repository import models

# Register your models here.

admin.site.register(models.UserProfile)


最后生成admin登录用户密码:

C:\Users\L\PycharmProjects\s14\homework\CmdbManage>python manage.py createsuperuser 


结果:

from django.db import models
from django.contrib.auth.models import  User
# Create your models here.

class Customer(models.Model):
'''潜在客户信息'''
name = models.CharField(max_length=32,blank=True,null=True)
qq = models.CharField(max_length=64,unique=True)
wechat = models.CharField(max_length=64,blank=True,null=True)
age = models.PositiveIntegerField(blank=True,null=True)
gender = models.PositiveIntegerField(choices=((0,'Female'),(1,'Male')),blank=True,null=True)
phone = models.PositiveIntegerField(blank=True,null=True)  #正整数
source_choices = (
(0,'Baidu商桥'),
(1,'51CTO'),
(2,'QQ群'),
(3,'知乎'),
(4,'SOGO'),
(5,'转介绍'),
(6,'其他'),
)
source = models.SmallIntegerField(choices=source_choices) # get_source_display 显示具体内容
referral_from = models.ForeignKey('Customer',related_name='my_referrals',blank=True,null=True) # 自关联,字段可写slef,必须写related_name
consult_courses = models.ManyToManyField(to='Course')
status_choices = (
(0,'已报名'),(1,'未报名'),(2,'已退学'),(3,'其他')
)
status = models.SmallIntegerField(choices=status_choices)
consultant = models.ForeignKey(to="UserProfile",verbose_name='课程顾问')
consult_content = models.TextField(max_length=1024)
data = models.DateTimeField(auto_now_add=True)

class Meta:
verbose_name_plural = '客户表'

def __str__(self):
return self.name

class Enrollment(models.Model):
'''注册用户'''
customer = models.ForeignKey('Customer')
class_grade = models.ForeignKey('ClassList')
enrollment_date = models.DateField()

class Meta:
unique_together = ('customer', 'class_grade')   #联合唯一
verbose_name_plural = '注册用户表'

def __str__(self):
return self.customer

class FollowUpRecord(models.Model):
'''销售跟进记录'''
customer = models.ForeignKey('Customer')
content = models.TextField(max_length=1024)
status_choices = (
(0,'绝无报名计划'),
(1,'一个月内报名'),
(2,'两周内报名'),
(3,'已报其他机构'),
)
status = models.SmallIntegerField(choices=status_choices)
consultant = models.ForeignKey(to="UserProfile", verbose_name='课程顾问')
data = models.DateTimeField(auto_now_add=True)

class Meta:
verbose_name_plural = '跟进记录表'

def __str__(self):
return self.customer

class Course(models.Model):
'''课程Python,Go'''
name = models.CharField(unique=True,max_length=32)
price = models.PositiveIntegerField(default=19800)
outline = models.TextField(max_length=1024)

class Meta:
verbose_name_plural = '课程表'

def __str__(self):
return self.name

class ClassList(models.Model):
'''班级s14,g1'''
course = models.ForeignKey("Course")
semester = models.PositiveIntegerField(verbose_name='学期')
class_type_choices = ((0,'脱产'),(1,'周末'),(2,'网络'))
branch = models.ForeignKey("Branch")
class_type = models.PositiveIntegerField(choices=class_type_choices)
teachers = models.ManyToManyField(to='UserProfile')
start_date = models.DateField()
end_date = models.DateField()

class Meta:
verbose_name_plural = '班级表'

def __str__(self):
return self.name

class CourseRecord(models.Model):
'''每节课上课记录'''
class_grade = models.ForeignKey('ClassList')
day_num = models.PositiveIntegerField(verbose_name='节次')
teacher = models.ForeignKey('UserProfile')
CourseContent = models.TextField(verbose_name="课程内容", max_length=1024)
has_homework = models.BooleanField(default=True)        #布尔类型
homework_title = models.CharField(max_length=128, blank=True, null=True)
homework_requirement = models.TextField(verbose_name="作业需求", max_length=1024, blank=True, null=True)

class Meta:
unique_together = ("class_grade", "day_num")
verbose_name_plural = '课节次表'

def __str__(self):
return " daynum:%s" % (self.day_number)

class StudyRecord(models.Model):
'''每个学生上的每节课的成绩记录'''
course_record = models.ForeignKey("CourseRecord")
student = models.ForeignKey("Enrollment")
score_choices = ((100, "A+"),
(90, "A"),
(85, "B+"),
(80, "B"),
(75, "B-"),
(70, "C+"),
(65, "C"),
(40, "C-"),
(-20, "D"),
(-50, "COPY"),
(0, "N/A"),
)
score = models.SmallIntegerField(choices=score_choices)
show_status_choices = (
(0, "缺勤"), (1, "已签到"), (2, "迟到")
)
show_status = models.SmallIntegerField(choices=show_status_choices)
grade_comment = models.TextField(max_length=1024, blank=True, null=True)

class Meta:
unique_together = ("course_record", "student")
verbose_name_plural = '学员成绩记录表'

def __str__(self):
return "%s  daynum:%s" % (self.course_record, self.student)

class UserProfile(models.Model):
'''员工用户表'''
user = models.OneToOneField(User)
name = models.CharField(max_length=32)

roles = models.ManyToManyField("Role")

class Meta:
verbose_name_plural = '用户表'

def __str__(self):
return self.name

class Role(models.Model):
"""角色表"""
name = models.CharField(unique=True,max_length=32)
menus = models.ManyToManyField("Menu")

class Meta:
verbose_name_plural = '角色表'

def __str__(self):
return self.name

class Branch(models.Model):
"""分校"""
name = models.CharField(unique=True,max_length=128)

class Meta:
verbose_name_plural = '分校表'

def __str__(self):
return self.name

class Menu(models.Model):
"""动态菜单"""
name = models.CharField(unique=True,max_length=32)
url_type = models.SmallIntegerField(choices=((0,'relative_name'),(1,'absolute_url')))
url_name = models.CharField(unique=True,max_length=128)

class Meta:
verbose_name_plural = '菜单表'

def __str__(self):
return self.name


models.py
注册admin:

class CustomerAdmin(admin.ModelAdmin):
# 显示字段 按顺序排序
list_display = ('id', 'name', 'qq', 'consultant', 'source', 'consult_content', 'status', 'data')
# filter过滤条件
list_filter = ('source', 'status', 'consultant')
# 检索条件
search_fields = ('qq', 'name')
# 直接在外部进行更改
list_editable = ('status',)
# 字段只读
readonly_fields = ('name',)
# 分页
list_per_page = 2
# 自定义actions方法
actions = ['action_test']
def action_test(self, request, querysets):
querysets.update(status=0)

admin.site.register(models.Customer, CustomerAdmin)
admin.site.register(models.FollowUpRecord)
admin.site.register(models.Enrollment)
admin.site.register(models.Course)
admin.site.register(models.ClassList)
admin.site.register(models.StudyRecord)
admin.site.register(models.UserProfile)
admin.site.register(models.Branch)
admin.site.register(models.Role)
admin.site.register(models.Menu)
admin.site.register(models.CourseRecord)


显示效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: