如何解决Django import-export会更新数据库,即使您不确认导入也是如此
我正在使用import-export模块创建django应用。我正在使用导入功能上载excel / csv,如果excel / csv文件中检测到更改,我的应用程序将发送电子邮件。
我的问题是,当我上传包含更改的excel / csv文件时,即使我仍在django管理页面上的“确认导入”页面上,单击“提交”按钮也已经触发了“发送邮件”功能。
>下面是我的模型。py
class Tracking2(models.Model):
MODE_CHOICES = (
('Air Freight','Air Freight'),('Sea Freight','Sea Freight'),)
name = models.CharField(max_length=255)
contact_number = models.CharField(max_length=255)
mode = models.CharField(max_length=255,choices=MODE_CHOICES)
tracking_number = models.CharField(max_length=255)
cargo_received_date = models.DateField(null=True,blank=True)
cargo_received_details = models.CharField(null=True,max_length=255,blank=True)
out_for_delivery_date = models.DateField(null=True,blank=True)
out_for_delivery_details = models.CharField(null=True,blank=True)
arrived_at_region_date = models.DateField(null=True,blank=True)
arrived_at_region_details = models.CharField(null=True,blank=True)
departed_shipping_facility_date = models.DateField(null=True,blank=True)
departed_shipping_facility_details = models.CharField(null=True,blank=True)
cargo_delivered_date = models.DateField(null=True,blank=True)
cargo_delivered_details = models.CharField(null=True,blank=True)
class Meta:
verbose_name_plural = "Italy"
def save(self,*args,**kwargs):
return super(Tracking2,self).save(*args,**kwargs)
@receiver(pre_save,sender=Tracking2)
def on_change(sender,instance: Tracking2,**kwargs):
if instance.id is None:
email_host = settings.EMAIL_HOST_USER
email_subject = 'New entry created'
recipient_list = ['test@email.com']
body = 'New entry created ' + instance.name
send_mail(email_subject,body,email_host,recipient_list )
else:
prevIoUs = Tracking2.objects.get(id=instance.id)
if prevIoUs.name != instance.name:
email_host = settings.EMAIL_HOST_USER
email_subject = 'There is an update on your order'
recipient_list = ['test@email.com']
body = 'Cargo Tracking Update for ' + instance.name + '\n' + 'Tracking Number: ' + instance.tracking_number
send_mail(email_subject,recipient_list )
下面是我的admin.py
from django.contrib import admin
from .models import Tracking,Tracking2
from import_export import resources
from import_export.admin import ImportExportModelAdmin
from rangefilter.filter import DaterangeFilter,DateTimeRangeFilter
class Tracking2Resources(resources.ModelResource):
class Meta:
model = Tracking2
class Tracking2Admin(ImportExportModelAdmin):
resource_class= Tracking2Resources
search_fields = ('name','contact_number','tracking_number','out_for_delivery_details' )
list_display = ("name","contact_number","mode","tracking_number","cargo_received_date","cargo_received_details","out_for_delivery_date","out_for_delivery_details","arrived_at_region_date","arrived_at_region_details","departed_shipping_facility_date","departed_shipping_facility_details","cargo_delivered_date","cargo_delivered_details")
list_filter = (
("cargo_received_date",DaterangeFilter),'mode'
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。