diff --git a/apps/comments/migrations/0001_initial.py b/apps/comments/migrations/0001_initial.py deleted file mode 100644 index 768a91f..0000000 --- a/apps/comments/migrations/0001_initial.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 3.2.5 on 2022-04-15 14:15 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Comments', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('post_time', models.DateTimeField(verbose_name='发布时间')), - ('content', models.CharField(max_length=50, verbose_name='弹幕内容')), - ], - ), - ] diff --git a/apps/enroll/admin.py b/apps/enroll/admin.py index dfebe37..ff45678 100644 --- a/apps/enroll/admin.py +++ b/apps/enroll/admin.py @@ -3,30 +3,30 @@ from .models import * # Register your models here. -class DepartmentAdmin(admin.ModelAdmin): - # 定制哪些字段需要展示 - list_display = ('id', 'name', 'picture') - - # sortable_by # 排序 - - list_editable = ('name', 'picture',) - - - list_per_page = 10 - - - list_max_show_all = 200 # default - - - search_fields = ['title'] - - # date_hierarchy = 'create_date' - - '''默认空值''' - empty_value_display = 'NA' - - '''过滤选项''' - list_filter = () +# class DepartmentAdmin(admin.ModelAdmin): +# # 定制哪些字段需要展示 +# list_display = ('id', 'name', 'picture') +# +# # sortable_by # 排序 +# +# list_editable = ('name', 'picture',) +# +# +# list_per_page = 10 +# +# +# list_max_show_all = 200 # default +# +# +# search_fields = ['title'] +# +# # date_hierarchy = 'create_date' +# +# '''默认空值''' +# empty_value_display = 'NA' +# +# '''过滤选项''' +# list_filter = () class New_memberAdmin(admin.ModelAdmin): # 定制哪些字段需要展示 @@ -50,6 +50,6 @@ class New_memberAdmin(admin.ModelAdmin): '''过滤选项''' list_filter = () -admin.site.register(Department ,DepartmentAdmin) +# admin.site.register(Department ,DepartmentAdmin) admin.site.register(NewMember) # admin.site.register(EmailVerifyRecord) diff --git a/apps/enroll/migrations/0001_initial.py b/apps/enroll/migrations/0001_initial.py deleted file mode 100644 index 752db97..0000000 --- a/apps/enroll/migrations/0001_initial.py +++ /dev/null @@ -1,46 +0,0 @@ -# Generated by Django 4.0.4 on 2022-04-15 17:46 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Department', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=10, verbose_name='部门名称')), - ('picture', models.ImageField(upload_to='', verbose_name='部门图标')), - ], - ), - migrations.CreateModel( - name='EmailVerifyRecord', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('code', models.CharField(max_length=20, verbose_name='验证码')), - ('email', models.EmailField(max_length=50, verbose_name='邮箱')), - ('send_time', models.DateTimeField(auto_now=True, verbose_name='发送时间')), - ], - ), - migrations.CreateModel( - name='New_member', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=20, verbose_name='姓名')), - ('major', models.CharField(max_length=20, verbose_name='年级专业')), - ('phone_number', models.CharField(max_length=11, verbose_name='手机号码')), - ('email', models.EmailField(max_length=254, verbose_name='邮箱')), - ('department', models.CharField(max_length=10, verbose_name='意向部门')), - ('expectation', models.CharField(max_length=10, verbose_name='期待的话')), - ('schedule', models.SmallIntegerField(choices=[(0, '尚未提交'), (1, '已报名'), (2, '初审中'), (3, '面试中'), (4, '笔试中'), (5, '成功录取'), (-1, '初审失败'), (-2, '面试失败'), (-3, '笔试失败'), (-4, '复试失败'), (-5, '未录取')], verbose_name='报名状态')), - ('verification_code', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='enroll.emailverifyrecord', verbose_name='邮箱验证码')), - ], - ), - ] diff --git a/apps/enroll/migrations/0002_alter_new_member_schedule_and_more.py b/apps/enroll/migrations/0002_alter_new_member_schedule_and_more.py deleted file mode 100644 index c89c004..0000000 --- a/apps/enroll/migrations/0002_alter_new_member_schedule_and_more.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.0.4 on 2022-04-15 18:20 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('enroll', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='new_member', - name='schedule', - field=models.SmallIntegerField(choices=[(0, '尚未提交'), (1, '已报名'), (2, '初审中'), (3, '面试中'), (4, '笔试中'), (5, '成功录取'), (-1, '初审失败'), (-2, '面试失败'), (-3, '笔试失败'), (-4, '复试失败'), (-5, '未录取')], default=0, verbose_name='报名状态'), - ), - migrations.AlterField( - model_name='new_member', - name='verification_code', - field=models.CharField(max_length=4), - ), - ] diff --git a/apps/enroll/migrations/0003_alter_new_member_email_alter_new_member_phone_number.py b/apps/enroll/migrations/0003_alter_new_member_email_alter_new_member_phone_number.py deleted file mode 100644 index bf7c080..0000000 --- a/apps/enroll/migrations/0003_alter_new_member_email_alter_new_member_phone_number.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.0.4 on 2022-04-16 06:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('enroll', '0002_alter_new_member_schedule_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='new_member', - name='email', - field=models.EmailField(max_length=254, unique=True, verbose_name='邮箱'), - ), - migrations.AlterField( - model_name='new_member', - name='phone_number', - field=models.CharField(max_length=11, unique=True, verbose_name='手机号码'), - ), - ] diff --git a/apps/enroll/migrations/0004_alter_emailverifyrecord_send_time.py b/apps/enroll/migrations/0004_alter_emailverifyrecord_send_time.py deleted file mode 100644 index 5f4475f..0000000 --- a/apps/enroll/migrations/0004_alter_emailverifyrecord_send_time.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.4 on 2022-04-17 13:12 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('enroll', '0003_alter_new_member_email_alter_new_member_phone_number'), - ] - - operations = [ - migrations.AlterField( - model_name='emailverifyrecord', - name='send_time', - field=models.DateTimeField(auto_now_add=True, verbose_name='发送时间'), - ), - ] diff --git a/apps/enroll/migrations/0005_alter_emailverifyrecord_code.py b/apps/enroll/migrations/0005_alter_emailverifyrecord_code.py deleted file mode 100644 index 3d1201a..0000000 --- a/apps/enroll/migrations/0005_alter_emailverifyrecord_code.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.0.4 on 2022-04-17 21:29 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('enroll', '0004_alter_emailverifyrecord_send_time'), - ] - - operations = [ - migrations.AlterField( - model_name='emailverifyrecord', - name='code', - field=models.CharField(max_length=5, verbose_name='验证码'), - ), - ] diff --git a/apps/enroll/migrations/0006_rename_new_member_newmember.py b/apps/enroll/migrations/0006_rename_new_member_newmember.py deleted file mode 100644 index 1a54818..0000000 --- a/apps/enroll/migrations/0006_rename_new_member_newmember.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.0.4 on 2022-05-05 18:52 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('enroll', '0005_alter_emailverifyrecord_code'), - ] - - operations = [ - migrations.RenameModel( - old_name='New_member', - new_name='NewMember', - ), - ] diff --git a/apps/enroll/models.py b/apps/enroll/models.py index b2a135d..459998b 100644 --- a/apps/enroll/models.py +++ b/apps/enroll/models.py @@ -6,7 +6,7 @@ from django.db import models # class Meta: # verbose_name_plural = u"部门信息" # -# # department = [ +# # department_cn = [ # # (0, "系统维护"), # # (1, "APP开发"), # # (2, "Web开发"), @@ -14,7 +14,7 @@ from django.db import models # # (4, "游戏开发"), # # (5, "UI设计") # # ] -# # id = models.IntegerField(verbose_name="部门ID", choices=department, primary_key=True) +# # id = models.IntegerField(verbose_name="部门ID", choices=department_cn, primary_key=True) # name = models.CharField(max_length=10, verbose_name="部门名称") # picture = models.ImageField(verbose_name="部门图标") # diff --git a/apps/enroll/serializers.py b/apps/enroll/serializers.py index 7016341..0c4949f 100644 --- a/apps/enroll/serializers.py +++ b/apps/enroll/serializers.py @@ -1,6 +1,7 @@ from rest_framework import serializers from rest_framework.validators import UniqueValidator -from apps.enroll.models import Department, NewMember, EmailVerifyRecord +from apps.enroll.models import NewMember, EmailVerifyRecord +from apps.history.models import Department import time from utils.get_error_msg import get_error_msg @@ -10,7 +11,7 @@ class DepartmentSerializer(serializers.ModelSerializer): class Meta: model = Department - fields = "__all__" + fields = ["department_cn", "picture"] class NewMemberSerializer(serializers.ModelSerializer): @@ -47,7 +48,7 @@ class NewMemberSerializer(serializers.ModelSerializer): "max_length": get_error_msg(42035) } }, - "department": { + "department_cn": { "error_messages": { "invalid_choice": get_error_msg(42036) } diff --git a/apps/enroll/urls.py b/apps/enroll/urls.py index 5d1da5d..697301c 100644 --- a/apps/enroll/urls.py +++ b/apps/enroll/urls.py @@ -4,7 +4,7 @@ from . import views # from rest_framework.routers import DefaultRouter urlpatterns = [ - path("department/", views.DepartmentMessageView.as_view()), + path("department_cn/", views.DepartmentMessageView.as_view()), path("sign_up/", views.SignUpView.as_view()), path("sign_up/verification_code/", views.SendEmailView.as_view()), # path("sign_up/", views.Sign_in.as_view({"get": "get"})) diff --git a/apps/enroll/views.py b/apps/enroll/views.py index 0f38b57..c71ba4e 100644 --- a/apps/enroll/views.py +++ b/apps/enroll/views.py @@ -1,6 +1,7 @@ from rest_framework.response import Response from rest_framework.generics import GenericAPIView -from apps.enroll.models import Department, EmailVerifyRecord, NewMember +from apps.history.models import Department +from apps.enroll.models import EmailVerifyRecord, NewMember from apps.enroll.serializers import DepartmentSerializer, NewMemberSerializer, NewMemberScheduleSerializer, \ SendEmailSerializer from rest_framework import status diff --git a/apps/history/migrations/0001_initial.py b/apps/history/migrations/0001_initial.py deleted file mode 100644 index 501c6bf..0000000 --- a/apps/history/migrations/0001_initial.py +++ /dev/null @@ -1,58 +0,0 @@ -# Generated by Django 4.0.4 on 2022-05-05 17:54 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Department', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('did', models.IntegerField(verbose_name='部门ID')), - ('department', models.CharField(max_length=10, verbose_name='部门')), - ('department_en', models.CharField(max_length=30, verbose_name='部门英文名称')), - ('content', models.CharField(max_length=800, verbose_name='内容')), - ('introduction', models.CharField(max_length=800, verbose_name='介绍')), - ], - options={ - 'verbose_name_plural': '部门详情', - 'db_table': 'it_Department', - }, - ), - migrations.CreateModel( - name='History', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('grade', models.IntegerField(verbose_name='年级')), - ('did', models.IntegerField(verbose_name='部门ID')), - ('department', models.CharField(max_length=10, verbose_name='部门')), - ], - options={ - 'verbose_name_plural': '历史表', - 'db_table': 'it_History', - }, - ), - migrations.CreateModel( - name='Members', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('avatar', models.ImageField(blank=True, upload_to='avatar', verbose_name='头像')), - ('did', models.IntegerField(default=0, verbose_name='所属部门ID')), - ('grade', models.IntegerField(verbose_name='年级')), - ('name', models.CharField(max_length=10, verbose_name='成员姓名')), - ('motto', models.CharField(max_length=30, verbose_name='座右铭')), - ('department', models.CharField(max_length=10, verbose_name='所属部门')), - ], - options={ - 'verbose_name_plural': '部门成员', - 'db_table': 'it_Members', - }, - ), - ] diff --git a/apps/history/models.py b/apps/history/models.py index 604ccfa..a92ee31 100644 --- a/apps/history/models.py +++ b/apps/history/models.py @@ -29,7 +29,7 @@ class History(models.Model): ]) # did = models.IntegerField("部门ID") # did = models.ForeignKey(Department, on_delete=models.DO_NOTHING(), related_name="history", verbose_name="部门id") - # department = models.CharField("部门", max_length=10) # 如“程序部” + # department_cn = models.CharField("部门", max_length=10) # 如“程序部” department = models.ForeignKey(Department, on_delete=models.DO_NOTHING, related_name="history", verbose_name="部门") class Meta: @@ -43,11 +43,11 @@ class History(models.Model): class Members(models.Model): # 默认id作为成员id avatar = models.ImageField("头像", upload_to="avatar", blank=True) - did = models.IntegerField("所属部门ID", default=0) + # did = models.IntegerField("所属部门ID", default=0) grade = models.IntegerField("年级") name = models.CharField("成员姓名", max_length=10) motto = models.CharField("座右铭", max_length=30) - # department = models.CharField("所属部门", max_length=10) + # department_cn = models.CharField("所属部门", max_length=10) department = models.ForeignKey(Department, on_delete=models.DO_NOTHING, related_name="member", verbose_name="所属部门") diff --git a/apps/history/serializers.py b/apps/history/serializers.py index acdfb69..035fd9b 100644 --- a/apps/history/serializers.py +++ b/apps/history/serializers.py @@ -1,117 +1,216 @@ import re from rest_framework import serializers + from apps.history import * from apps.history.models import Department, Members, History -def validate_department(value): - reg = re.compile(r'^[\u4e00-\u9fa5A-Za-z]*$') - if not reg.match(value): - raise serializers.ValidationError("42011-部门名称中只能输入汉字或英文") +# def validate_department(value): +# reg = re.compile(r'^[\u4e00-\u9fa5A-Za-z]*$') +# if not reg.match(value): +# raise serializers.ValidationError("42011-部门名称中只能输入汉字或英文") +# +# +# def validate_department_en(value): +# reg = re.compile(r'^[A-Za-z][A-Za-z\s]*$') +# if not reg.match(value): +# raise serializers.ValidationError("42010-部门英文名称中只能输入英文") +# +# +# def name_validate(value): +# reg = re.compile(r'^[\u4e00-\u9fa5A-Za-z]*$') +# if not reg.match(value): +# raise serializers.ValidationError("42012-姓名只能输入汉字或英文") -def validate_department_en(value): - reg = re.compile(r'^[A-Za-z][A-Za-z\s]*$') - if not reg.match(value): - raise serializers.ValidationError("42010-部门英文名称中只能输入英文") - - -def name_validate(value): - reg = re.compile(r'^[\u4e00-\u9fa5A-Za-z]*$') - if not reg.match(value): - raise serializers.ValidationError("42012-姓名只能输入汉字或英文") - # # def validate_avatar(value): # s = str(value) # return s -class DepartmentSerializer(serializers.Serializer): - did = serializers.IntegerField(required=True, error_messages={"blank": '41010-部门ID不能为空', "invalid": '42020-类型错误'}) - department = serializers.CharField(max_length=10, required=True, trim_whitespace=True, - validators=[validate_department], - error_messages={"max_length": '42021-部门名称长度过长', "blank": '41011-部门名称不能为空'}) - department_en = serializers.CharField(max_length=30, required=True, trim_whitespace=True, - validators=[validate_department_en], - error_messages={"max_length": '42022-部门英文名称长度过长', - "blank": '41012-部门英文名称不能为空'}) - content = serializers.CharField(max_length=800, required=True, trim_whitespace=True, - error_messages={"max_length": '42023-内容过长', "blank": '41013-内容不能为空'}) - introduction = serializers.CharField(max_length=800, required=True, trim_whitespace=True, - error_messages={"max_length": '42024-介绍内容过长', "blank": '41014-介绍内容不能为空'}) +# class DepartmentSerializer(serializers.Serializer): +# did = serializers.IntegerField(required=True, error_messages={"blank": '41010-部门ID不能为空', "invalid": '42020-类型错误'}) +# department_cn = serializers.CharField(max_length=10, required=True, trim_whitespace=True, +# validators=[validate_department], +# error_messages={"max_length": '42021-部门名称长度过长', "blank": '41011-部门名称不能为空'}) +# department_en = serializers.CharField(max_length=30, required=True, trim_whitespace=True, +# validators=[validate_department_en], +# error_messages={"max_length": '42022-部门英文名称长度过长', +# "blank": '41012-部门英文名称不能为空'}) +# content = serializers.CharField(max_length=800, required=True, trim_whitespace=True, +# error_messages={"max_length": '42023-内容过长', "blank": '41013-内容不能为空'}) +# introduction = serializers.CharField(max_length=800, required=True, trim_whitespace=True, +# error_messages={"max_length": '42024-介绍内容过长', "blank": '41014-介绍内容不能为空'}) +# +# # class Meta: +# # model = Department +# # fields = ('did', 'department_en', 'department_cn', 'part', 'title', 'content') +# +# def create(self, validated_data): +# return Department.objects.create(**validated_data) +# +# def update(self, instance, validated_data): +# instance.content = validated_data.get("content", instance.content) +# instance.department_cn = validated_data.get("department_cn", instance.department_cn) +# instance.department_en = validated_data.get("department_en", instance.department_en) +# instance.id = validated_data.get("id", instance.id) +# instance.title = validated_data.get("title", instance.title) +# instance.part = validated_data.get("part", instance.part) +# instance.save() +# return instance - # class Meta: - # model = Department - # fields = ('did', 'department_en', 'department', 'part', 'title', 'content') +class DepartmentSerializer(serializers.ModelSerializer): + class Meta: + model = Department + fields = "__all__" - def create(self, validated_data): - return Department.objects.create(**validated_data) + extra_kwargs = { + "department_cn": { + "error_messages": { + "max_length": '42021-部门名称长度过长', + "blank": '41011-部门名称不能为空' + } + }, + "department_en": { + "error_messages": { + "max_length": '42022-部门英文名称长度过长', + "blank": '41012-部门英文名称不能为空' + } + }, + "content": { + "error_messages": { + "max_length": '42023-内容过长', + "blank": '41013-内容不能为空' + } + }, + "introduction": { + "error_messages": { + "max_length": '42024-介绍内容过长', + "blank": '41014-介绍内容不能为空' + } + } + } - def update(self, instance, validated_data): - instance.content = validated_data.get("content", instance.content) - instance.department = validated_data.get("department", instance.department) - instance.department_en = validated_data.get("department_en", instance.department_en) - instance.id = validated_data.get("id", instance.id) - instance.title = validated_data.get("title", instance.title) - instance.part = validated_data.get("part", instance.part) - instance.save() - return instance + def validate_department_cn(self, data): + reg = re.compile(r'^[\u4e00-\u9fa5A-Za-z]*$') + if not reg.match(data): + raise serializers.ValidationError("42011-部门名称中只能输入汉字或英文") + return data + + def validate_department_en(self, data): + reg = re.compile(r'^[A-Za-z][A-Za-z\s]*$') + if not reg.match(data): + raise serializers.ValidationError("42010-部门英文名称中只能输入英文") + return data + + def validate_name(self, data): + reg = re.compile(r'^[\u4e00-\u9fa5A-Za-z]*$') + if not reg.match(data): + raise serializers.ValidationError("42012-姓名只能输入汉字或英文") + return data -class MembersSerializer(serializers.HyperlinkedModelSerializer): +# class MembersSerializer(serializers.HyperlinkedModelSerializer): +# did = serializers.IntegerField(required=True, error_messages={"blank": '41010-部门ID不能为空', "invalid": '42020-类型错误'}) +# department = serializers.CharField(max_length=10, required=True, trim_whitespace=True, +# error_messages={"max_length": '42021-部门名称过长', "blank": '41011-部门名称不能为空'}) +# grade = serializers.IntegerField(required=True, min_value=2001, max_value=2022, +# error_messages={"max_value": '42025-年级数过大', "blank": "41015-年级数不能为空", +# "min_value": '42026-年级数过小'}) +# name = serializers.CharField(required=True, trim_whitespace=True, max_length=6, +# error_messages={"blank": '41016-姓名不能为空', "max_length": '42027-姓名过长'}) +# motto = serializers.CharField(required=False, trim_whitespace=True, max_length=25, validators=[name_validate], +# error_messages={"max_length": '42028-座右铭过长'}) +# +# # avatar = serializers.ImageField(validators=[validate_avatar]) +# +# class Meta: +# model = Members +# fields = ('did', 'department_cn', 'grade', 'name', 'motto') +# +# def create(self, validated_data): +# return Members.objects.create(**validated_data) +# +# def update(self, instance, validated_data): +# instance.did = validated_data.get("did", instance.did) +# instance.department_cn = validated_data.get("department_cn", instance.department_cn) +# instance.grade = validated_data.get("grade", instance.grade) +# instance.name = validated_data.get("name", instance.name) +# instance.motto = validated_data.get("motto", instance.motto) +# instance.avatar = validated_data.get("avatar", instance.avatar) +# instance.save() +# return instance - did = serializers.IntegerField(required=True, error_messages={"blank": '41010-部门ID不能为空', "invalid": '42020-类型错误'}) - department = serializers.CharField(max_length=10, required=True, trim_whitespace=True, - error_messages={"max_length": '42021-部门名称过长', "blank": '41011-部门名称不能为空'}) - grade = serializers.IntegerField(required=True, min_value=2001, max_value=2022, - error_messages={"max_value": '42025-年级数过大', "blank": "41015-年级数不能为空", - "min_value": '42026-年级数过小'}) - name = serializers.CharField(required=True, trim_whitespace=True, max_length=6, - error_messages={"blank": '41016-姓名不能为空', "max_length": '42027-姓名过长'}) - motto = serializers.CharField(required=False, trim_whitespace=True, max_length=25, validators=[name_validate], - error_messages={"max_length": '42028-座右铭过长'}) - # avatar = serializers.ImageField(validators=[validate_avatar]) +class MembersSerializer(serializers.ModelSerializer): + department = serializers.CharField(source="department.department_cn") class Meta: model = Members fields = ('did', 'department', 'grade', 'name', 'motto') - def create(self, validated_data): - return Members.objects.create(**validated_data) + extra_kwargs = { + "did": { + "error_messages": { + "blank": '41010-部门ID不能为空', + "invalid": '42020-类型错误' + } + }, + "department": { + "error_messages": { + "max_length": '42021-部门名称过长', + "blank": '41011-部门名称不能为空' + } + }, + "grade": { + "error_messages": { + "max_value": '42025-年级数过大', + "blank": "41015-年级数不能为空", + "min_value": '42026-年级数过小' + } + }, + "name": { + "error_messages": { + "blank": '41016-姓名不能为空', + "max_length": '42027-姓名过长' + } + }, + "motto": { + "error_messages": { + "max_length": '42028-座右铭过长' + } + } - def update(self, instance, validated_data): - instance.did = validated_data.get("did", instance.did) - instance.department = validated_data.get("department", instance.department) - instance.grade = validated_data.get("grade", instance.grade) - instance.name = validated_data.get("name", instance.name) - instance.motto = validated_data.get("motto", instance.motto) - instance.avatar = validated_data.get("avatar", instance.avatar) - instance.save() - return instance + } -class HistorySerializer(serializers.Serializer): +# class HistorySerializer(serializers.Serializer): +# grade = serializers.IntegerField(required=True, min_value=2001, max_value=2022, +# error_messages={"max_value": '42025-年级数过大', "blank": "41015-年级数不能为空", +# "min_value": '42026-年级数过小'}) +# did = serializers.IntegerField(required=True, error_messages={"blank": '41010-部门ID不能为空', "invalid": '42020-类型错误'}) +# department = serializers.CharField(max_length=10, required=True, trim_whitespace=True, +# validators=[validate_department], +# error_messages={"max_length": '42021-部门名称过长', "blank": '41011-部门名称不能为空'}) +# +# # class Meta: +# # model = History +# # fields = ('grade', 'did', 'department_cn') +# # +# +# def create(self, validated_data): +# return History.objects.create(**validated_data) +# +# def update(self, instance, validated_data): +# instance.department_cn = validated_data.get("department_cn", instance.department_cn) +# instance.grade = validated_data.get("grade", instance.grade) +# instance.did = validated_data.get("did", instance.did) +# instance.save() +# return instance - grade = serializers.IntegerField(required=True, min_value=2001, max_value=2022, - error_messages={"max_value": '42025-年级数过大', "blank": "41015-年级数不能为空", - "min_value": '42026-年级数过小'}) - did = serializers.IntegerField(required=True, error_messages={"blank": '41010-部门ID不能为空', "invalid": '42020-类型错误'}) - department = serializers.CharField(max_length=10, required=True, trim_whitespace=True, - validators=[validate_department], - error_messages={"max_length": '42021-部门名称过长', "blank": '41011-部门名称不能为空'}) +class HistorySerializer(serializers.ModelSerializer): + department = serializers.CharField(source="department.department_cn") - # class Meta: - # model = History - # fields = ('grade', 'did', 'department') - # - - def create(self, validated_data): - return History.objects.create(**validated_data) - - def update(self, instance, validated_data): - instance.department = validated_data.get("department", instance.department) - instance.grade = validated_data.get("grade", instance.grade) - instance.did = validated_data.get("did", instance.did) - instance.save() - return instance + class Meta: + model = History + fields = ('years', 'department') diff --git a/apps/history/urls.py b/apps/history/urls.py index 5881778..e9001a9 100644 --- a/apps/history/urls.py +++ b/apps/history/urls.py @@ -4,7 +4,7 @@ from django.urls import path from apps.history.views import DepartmentViewSet, MemberViewSet, HistoryViewSet urlpatterns = [ - path('department/', DepartmentViewSet.as_view()), + path('department_cn/', DepartmentViewSet.as_view()), path('member/', MemberViewSet.as_view()), path('history/', HistoryViewSet.as_view()), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/apps/history/views.py b/apps/history/views.py index c3bcce6..c1d7e2e 100644 --- a/apps/history/views.py +++ b/apps/history/views.py @@ -19,7 +19,7 @@ class DepartmentViewSet(APIView): } obj = Department.objects.all().filter(did=request.GET.get('did')).first() # 获取符合did的DepartmentObject # (默认每个部门只对应一个object) - d = {'did': obj.did, 'department': obj.department, 'department_en': obj.department_en, 'content': obj.content, + d = {'did': obj.did, 'department_cn': obj.department_cn, 'department_en': obj.department_en, 'content': obj.content, 'introduction': obj.introduction} # 将其转为字典类(用于放入serializer检验) serializer = DepartmentSerializer(data=d) if serializer.is_valid(): @@ -51,7 +51,7 @@ class MemberViewSet(APIView): if avatar == '': avatar = "default/user.jpg" # 将符合要求的一个object都转为字典 - d = {'id': x.id, 'did': x.did, 'grade': x.grade, 'department': x.department, 'motto': x.motto, + d = {'id': x.id, 'did': x.did, 'grade': x.grade, 'department_cn': x.department_cn, 'motto': x.motto, 'name': x.name, 'avatar': avatar} # 将路径转为字符串格式 serializer = MembersSerializer(data=d) @@ -80,7 +80,7 @@ class HistoryViewSet(APIView): ser = History.objects.all() # 获取全部历史列表信息 # 同上,对每一个object进行判断 for x in ser: - d = {'did': x.did, 'grade': x.grade, 'department': x.department} + d = {'did': x.did, 'grade': x.grade, 'department_cn': x.department_cn} serializer = HistorySerializer(data=d) if serializer.is_valid(): continue @@ -100,7 +100,7 @@ class HistoryViewSet(APIView): a = History.objects.get(Q(did=j) & Q(grade=i)) except History.DoesNotExist: # 若为空,则继续判断下一个部门 continue - x = {'id': a.did, 'department_name': a.department} + x = {'id': a.did, 'department_name': a.department_cn} y.append(x) data['data'] = y info.append(data)