From 0c24c7e7e92c5eef9c4f7f597f7e96dcaf339a9f Mon Sep 17 00:00:00 2001 From: colaftc Date: Thu, 15 Jan 2026 21:02:04 +0800 Subject: [PATCH] fix: added external_finished_product into admin --- shipment/admin.py | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/shipment/admin.py b/shipment/admin.py index 728d1b0..614dcfa 100644 --- a/shipment/admin.py +++ b/shipment/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from .models import Shipment, SalesItem +from .models import ExternalFinishedProduct, Shipment, SalesItem class SalesItemInline(admin.TabularInline): @@ -9,14 +9,21 @@ class SalesItemInline(admin.TabularInline): readonly_fields = ['created_by'] +class ExternalFinishedProductInline(admin.TabularInline): + model = ExternalFinishedProduct + extra = 1 + fields = ['style_name', 'num_of_rolls', 'remark', 'created_by', 'created_at'] + readonly_fields = ['created_by', 'created_at'] + + @admin.register(Shipment) class ShipmentAdmin(admin.ModelAdmin): - list_display = ['id', 'customer', 'shipment_date', 'items_count', 'created_by', 'created_at'] - list_filter = ['shipment_date', 'created_at'] - search_fields = ['customer__name', 'remark'] + list_display = ['id', 'merchant', 'customer', 'shipment_date', 'status', 'external_id', 'items_count', 'created_by', 'created_at'] + list_filter = ['merchant', 'status', 'shipment_date', 'created_at'] + search_fields = ['customer__name', 'remark', 'external_id'] readonly_fields = ['created_at', 'updated_at', 'created_by'] date_hierarchy = 'shipment_date' - inlines = [SalesItemInline] + inlines = [SalesItemInline, ExternalFinishedProductInline] def items_count(self, obj): return obj.items.count() @@ -30,7 +37,7 @@ class ShipmentAdmin(admin.ModelAdmin): def save_formset(self, request, form, formset, change): instances = formset.save(commit=False) for instance in instances: - if isinstance(instance, SalesItem) and not instance.pk: + if isinstance(instance, (SalesItem, ExternalFinishedProduct)) and not instance.pk: instance.created_by = request.user instance.save() formset.save_m2m() @@ -54,3 +61,17 @@ class SalesItemAdmin(admin.ModelAdmin): if not change: obj.created_by = request.user super().save_model(request, obj, form, change) + + +@admin.register(ExternalFinishedProduct) +class ExternalFinishedProductAdmin(admin.ModelAdmin): + list_display = ['id', 'shipment', 'style_name', 'num_of_rolls', 'remark', 'created_by', 'created_at'] + list_filter = ['created_at', ('shipment', admin.EmptyFieldListFilter)] + search_fields = ['style_name', 'remark', 'shipment__external_id', 'shipment__customer__name'] + readonly_fields = ['created_at', 'updated_at', 'created_by'] + raw_id_fields = ['shipment'] + + def save_model(self, request, obj, form, change): + if not change: + obj.created_by = request.user + super().save_model(request, obj, form, change)