管理パネルでDjango-import-exportモジュールを使用しています。Django myapp データベースのレコードを更新する ERM システムから抽出した .csv ファイルをインポートします。一部のレコードが ERM から削除され、.csv データダンプに存在しない場合、レコードが存在しないため、Django データベースで更新が行われないことを除いて、すべてが魔法のように機能します。
.csv ファイルをインポートするときに、前述の .csv ファイルに存在しないすべてのレコードを変更または削除する (できればレコード名を「削除済み」に変更する) 句を書きたいと思います。レコードは、データベースの主キーである「番号」列によって識別されます。
私が見つけた最も近い解決策は、アップロードされたファイルに「削除」列を追加して「1」を設定することでしたが、そもそもこれらのレコードが存在しないため、それは役に立ちません。
私のadmin.pyは次のようになります。
from django.contrib import admin
from .models import Supplier, SiteServices
from import_export import resources, widgets, fields
from import_export.admin import ImportExportModelAdmin
# Register your models here.
class SupplierResource(resources.ModelResource):
delete = fields.Field(widget=widgets.BooleanWidget())
def for_delete(self, row, instance):
return self.fields['delete'].clean(row)
class Meta:
model = Supplier
import_id_fields = ['number']
class SupplierAdmin(ImportExportModelAdmin, admin.ModelAdmin):
resource_class = SupplierResource
admin.site.register(Supplier, SupplierAdmin)