微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django import-export会更新数据库,即使您不确认导入也是如此

如何解决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 举报,一经查实,本站将立刻删除。