diff --git a/apps/qm/filters.py b/apps/qm/filters.py index 162c793e..4aba5326 100644 --- a/apps/qm/filters.py +++ b/apps/qm/filters.py @@ -1,5 +1,6 @@ from django_filters import rest_framework as filters -from apps.qm.models import QuaStat, TestItem, FtestWork +from apps.qm.models import QuaStat, TestItem, FtestWork, Qct +from apps.utils.filters import MyJsonListFilter class QuaStatFilter(filters.FilterSet): @@ -14,6 +15,12 @@ class QuaStatFilter(filters.FilterSet): "sflog__end_time": ["day", "month", "year", "lt"], } +class QctFilter(filters.FilterSet): + tags = MyJsonListFilter(label="tags查询,分隔") + + class Meta: + model = Qct + fields = ["testitems", "defects"] class TestItemFilter(filters.FilterSet): tags__contains = filters.CharFilter(field_name='tags', lookup_expr='contains') diff --git a/apps/qm/migrations/0029_auto_20241219_1006.py b/apps/qm/migrations/0029_auto_20241219_1034.py similarity index 94% rename from apps/qm/migrations/0029_auto_20241219_1006.py rename to apps/qm/migrations/0029_auto_20241219_1034.py index 2dddeeb1..2f2b08f9 100644 --- a/apps/qm/migrations/0029_auto_20241219_1006.py +++ b/apps/qm/migrations/0029_auto_20241219_1034.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.12 on 2024-12-19 02:06 +# Generated by Django 3.2.12 on 2024-12-19 02:34 from django.conf import settings from django.db import migrations, models @@ -9,8 +9,8 @@ import django.utils.timezone class Migration(migrations.Migration): dependencies = [ - ('mtm', '0048_auto_20241218_1431'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('mtm', '0048_auto_20241218_1431'), ('qm', '0028_defect'), ] @@ -40,7 +40,7 @@ class Migration(migrations.Migration): ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), ('tracing', models.CharField(choices=[('test', '检测项'), ('defect', '缺陷项')], default='test', help_text="(('test', '检测项'), ('defect', '缺陷项'))", max_length=20, verbose_name='追溯层级')), ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mtm.material', verbose_name='物料')), - ('qc', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.qct', verbose_name='质检模板')), + ('qct', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.qct', verbose_name='质检模板')), ], options={ 'abstract': False, @@ -57,7 +57,7 @@ class Migration(migrations.Migration): ('rule_expression', models.TextField(blank=True, null=True, verbose_name='判定表达式')), ('sort', models.FloatField(default=1, verbose_name='排序')), ('defect', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qm.defect', verbose_name='缺陷项')), - ('qc', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.qct', verbose_name='质检模板')), + ('qct', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.qct', verbose_name='质检模板')), ('testitem', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qm.testitem', verbose_name='检测项')), ], options={ diff --git a/apps/qm/models.py b/apps/qm/models.py index 2611f7a5..5b34a674 100644 --- a/apps/qm/models.py +++ b/apps/qm/models.py @@ -143,7 +143,7 @@ class Qct(CommonAModel): materials = models.ManyToManyField(Material, verbose_name="物料", blank=True, through='qm.qctmat') class QctItem(BaseModel): - qc = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE) + qct = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE) testitem = models.ForeignKey(TestItem, verbose_name="检测项", on_delete=models.CASCADE, null=True, blank=True) note = models.TextField('备注', null=True, blank=True) rule_expression = models.TextField('判定表达式', null=True, blank=True) @@ -151,7 +151,7 @@ class QctItem(BaseModel): sort = models.FloatField('排序', default=1) class QctMat(BaseModel): - qc = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE) + qct = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE) material = models.ForeignKey(Material, verbose_name="物料", on_delete=models.CASCADE) tracing = models.CharField('追溯层级', default=QC_T, choices=QC_TRACE_CHOICES, max_length=20, help_text=str(QC_TRACE_CHOICES)) diff --git a/apps/qm/views.py b/apps/qm/views.py index 938b9f31..d9e03922 100644 --- a/apps/qm/views.py +++ b/apps/qm/views.py @@ -14,7 +14,7 @@ import datetime from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.wpm.models import SfLog -from apps.qm.filters import QuaStatFilter, TestItemFilter, FtestWorkFilter +from apps.qm.filters import QuaStatFilter, TestItemFilter, FtestWorkFilter, QctFilter from django.db import transaction from apps.qm.models import NotOkOption, Defect, Qct, QctItem, QctMat from apps.qm.services import ftestwork_submit @@ -43,12 +43,11 @@ class QctViewSet(CustomModelViewSet): queryset = Qct.objects.all() serializer_class = QctSerializer retrieve_serializer_class = QctDetailSerializer - filterset_fields = ["tags", "testitems", "defects"] + filterset_class = QctFilter search_fields = ["name", "number"] class QctItemViewSet(CustomModelViewSet): - """ - list: 检测模板项 + """检测模板项 检测模板项 """ @@ -56,11 +55,10 @@ class QctItemViewSet(CustomModelViewSet): queryset = QctItem.objects.all() serializer_class = QctItemSerializer filterset_fields = ["qct", "testitem", "defect"] - ordering = ["qc", "sort"] + ordering = ["qct", "sort"] class QctMatViewSet(CustomModelViewSet): - """ - list: 检测物料 + """检测物料 检测物料 """