feat: 增加utask过滤条件

This commit is contained in:
caoqianming 2023-10-20 09:24:56 +08:00
parent 3d407795a9
commit 3fd0347837
4 changed files with 44 additions and 4 deletions

View File

@ -1,10 +1,31 @@
from django_filters import rest_framework as filters
from apps.pm.models import Mtask
from apps.pm.models import Mtask, Utask
from django.utils import timezone
from datetime import datetime, timedelta
from django.db.models import F
class UtaskFilter(filters.FilterSet):
class Meta:
model = Utask
fields = {
"state": ["exact", "in"],
"start_date": ["exact", "gte", "lte"],
"end_date": ["exact", "gte", "lte"],
"material": ["exact"],
"material__type": ["exact"],
"material__is_hidden": ["exact"],
"mtask_utask__mgroup": ["exact"],
"mtask_utask__mgroup__belong_dept": ['exact'],
"mtask_utask__mgroup__belong_dept__name": ['exact']
}
def filter_queryset(self, queryset):
queryset = super().filter_queryset(queryset)
return queryset.distinct()
class MtaskFilter(filters.FilterSet):
tag = filters.CharFilter(method='filter_tag')

View File

@ -0,0 +1,19 @@
# Generated by Django 3.2.12 on 2023-10-20 01:17
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('pm', '0007_auto_20231019_1812'),
]
operations = [
migrations.AlterField(
model_name='mtask',
name='utask',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='mtask_utask', to='pm.utask', verbose_name='关联大任务'),
),
]

View File

@ -62,4 +62,4 @@ class Mtask(CommonADModel):
start_date = models.DateField('计划开工日期')
end_date = models.DateField('计划完工日期')
utask = models.ForeignKey(
Utask, verbose_name='关联大任务', on_delete=models.CASCADE, null=True, blank=True)
Utask, verbose_name='关联大任务', on_delete=models.CASCADE, null=True, blank=True, related_name='mtask_utask')

View File

@ -6,7 +6,7 @@ from rest_framework.response import Response
from apps.utils.serializers import PkSerializer
from apps.utils.viewsets import CustomModelViewSet
from .filters import MtaskFilter
from .filters import MtaskFilter, UtaskFilter
from .models import Mtask, Utask
from .serializers import MtaskSerializer, SchedueSerializer, UtaskSerializer
from .services import PmService
@ -22,7 +22,7 @@ class UtaskViewSet(CustomModelViewSet):
"""
queryset = Utask.objects.all()
serializer_class = UtaskSerializer
filterset_fields = ['material', 'state']
filterset_class = UtaskFilter
select_related_fields = ['material']
ordering = ['-start_date']