fix: mlogserializer material_outs_ bug修复

This commit is contained in:
caoqianming 2023-11-02 15:20:14 +08:00
parent 2cd4a68e23
commit 4460d4af61
3 changed files with 33 additions and 10 deletions

View File

@ -0,0 +1,20 @@
# Generated by Django 3.2.12 on 2023-11-02 07:10
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('mtm', '0023_auto_20231102_1128'),
('wpm', '0026_alter_wmaterial_unique_together'),
]
operations = [
migrations.AlterField(
model_name='mlogb',
name='material_out',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='mlogb_material_out', to='mtm.material', verbose_name='产物'),
),
]

View File

@ -135,12 +135,16 @@ class Mlog(CommonADModel):
submit_user = models.ForeignKey(
User, verbose_name='提交人', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_submit_user')
@property
def mlogb(self):
return Mlogb.objects.filter(mlog=self)
class Mlogb(BaseModel):
mlog = models.ForeignKey(Mlog, verbose_name='关联日志',
on_delete=models.CASCADE)
material_out = models.ForeignKey(
Material, verbose_name='产物', on_delete=models.CASCADE)
Material, verbose_name='产物', on_delete=models.CASCADE, related_name='mlogb_material_out')
count_ok = models.PositiveIntegerField('合格数量', default=0)

View File

@ -112,8 +112,8 @@ class MlogSerializer(CustomModelSerializer):
equipment_2_name = serializers.CharField(
source='equipment_2.name', read_only=True)
shift_name = serializers.CharField(source='shift.name', read_only=True)
material_outs_ = MlogbSerializer(
label='多产出件信息', many=True, source='material_outs')
mlogb = MlogbSerializer(
label='多产出件信息', many=True, required=False)
handle_users_ = UserSimpleSerializer(
source='handle_users', many=True, read_only=True)
@ -124,7 +124,6 @@ class MlogSerializer(CustomModelSerializer):
['submit_time', 'submit_user', 'material_outs']
def create(self, validated_data):
print(1, validated_data)
mtask = validated_data.get('mtask', None)
batch = validated_data['batch']
handle_date = validated_data['handle_date']
@ -143,12 +142,12 @@ class MlogSerializer(CustomModelSerializer):
if Mlog.objects.filter(mtask=mtask, batch=batch, handle_date=handle_date, handle_user=handle_user).exists():
raise ValidationError('存在相同的日志记录')
with transaction.atomic():
material_outs_ = validated_data.pop('material_outs_', [])
mlogb = validated_data.pop('mlogb', [])
instance = super().create(validated_data)
brotherId_should_list = material_out.brothers
if brotherId_should_list:
if material_outs_:
for item in material_outs_:
if mlogb:
for item in mlogb:
if item['material_out'].id in brotherId_should_list:
Mlogb.objects.create(
mlog=instance, material_out=item['material_out'], count_ok=item['count_ok'])
@ -163,12 +162,12 @@ class MlogSerializer(CustomModelSerializer):
validated_data.pop('handle_user', None)
validated_data.pop('mgroup', None)
with transaction.atomic():
material_outs_ = validated_data.pop('material_outs_', [])
mlogb = validated_data.pop('mlogb', [])
instance = super().update(instance, validated_data)
brotherId_should_list = instance.material_out.brothers
if brotherId_should_list:
if material_outs_:
for item in material_outs_:
if mlogb:
for item in mlogb:
id = item.get('id', None)
if id:
mlogb = Mlogb.objects.get(id=id)