Python django导入导出:获取post_导出以更新模型

Python django导入导出:获取post_导出以更新模型,python,django,django-import-export,Python,Django,Django Import Export,请说明我如何使用post_导出信号更新以下导出的公司模型。 我不想导出以前未导出的项目。所以最好的办法就是使用信号 但是,如果我在下面代码末尾的信号中打印模型,我会得到一个类型类,例如 我知道保存一个模型是做错了什么,但我找不到自己的路 可能我不理解找到的django导入导出库的文档 models.py class Company(models.Model): class Meta: verbose_name_plural = "Companies" compa

请说明我如何使用post_导出信号更新以下导出的公司模型。 我不想导出以前未导出的项目。所以最好的办法就是使用信号

但是,如果我在下面代码末尾的信号中打印模型,我会得到一个类型类,例如

我知道保存一个模型是做错了什么,但我找不到自己的路

可能我不理解找到的
django导入导出
库的文档

models.py

class Company(models.Model):
    class Meta:
        verbose_name_plural = "Companies"

    company_name = models.CharField(max_length=254, blank=True)
    website = models.URLField(max_length=254, unique=True)
    address = models.CharField(max_length=254, blank=True, null=True)
    imported = models.BooleanField(default=False)
    exported = models.BooleanField(default=False)
    user = models.ForeignKey(User)

    def __str__(self):
        if self.company_name:
            return self.company_name
        return self.domain
管理员

from django.dispatch import receiver 
from import_export.signals import post_import, post_export

class CompanyResource(resources.ModelResource):
    class Meta:
        model = Company
        fields = ('website', 'user', 'country', 'source', 'industry')

@admin.register(Company)
class CompanyAmin(ImportExportModelAdmin):
    resource_class = CompanyResource
    list_display = ('domain', 'website', 'exported', 'added_on')
    list_filter = ('user', 'country', 'imported', 'exported', 'added_on')


@receiver(post_export, dispatch_uid='ss1')
def _post_export(model, **kwargs):
    print(model) 
    model.exported = True
    model.save() # This line when included raises Error: "save() missing 1 required positional argument: 'self'" so code breaks here

请注意,该函数接受一个发送方参数以及通配符 关键词参数(**kwargs);所有信号处理程序都必须使用这些 争论

更新: django导入导出不发送导出查询集输入信号

因此,您可以在ModelAdmin中覆盖导出操作

@admin.register(Company)
class CompanyAmin(ImportExportModelAdmin):
    resource_class = CompanyResource
    list_display = ('domain', 'website', 'exported', 'added_on')
    list_filter = ('user', 'country', 'imported', 'exported', 'added_on')

    def export_action(self, request, *args, **kwargs):
        response = super().export_action(request, *args, **kwargs)
        qs = self.get_export_queryset(request)
        qs.update(exported=True)
        return response

请注意,该函数接受一个发送方参数以及通配符 关键词参数(**kwargs);所有信号处理程序都必须使用这些 争论

更新: django导入导出不发送导出查询集输入信号

因此,您可以在ModelAdmin中覆盖导出操作

@admin.register(Company)
class CompanyAmin(ImportExportModelAdmin):
    resource_class = CompanyResource
    list_display = ('domain', 'website', 'exported', 'added_on')
    list_filter = ('user', 'country', 'imported', 'exported', 'added_on')

    def export_action(self, request, *args, **kwargs):
        response = super().export_action(request, *args, **kwargs)
        qs = self.get_export_queryset(request)
        qs.update(exported=True)
        return response

АСааааааааааааааа1072

要在之后导出,必须在resources.ModelResource中添加以下函数

class CompanyResource(resources.ModelResource):
    class Meta:
        model = Company
        fields = ('website', 'user', 'country', 'source', 'industry')

    def after_export(self, queryset, data, *args, **kwargs):
        queryset.update(exported=True)

АСааааааааааааааа1072

要在之后导出,必须在resources.ModelResource中添加以下函数

class CompanyResource(resources.ModelResource):
    class Meta:
        model = Company
        fields = ('website', 'user', 'country', 'source', 'industry')

    def after_export(self, queryset, data, *args, **kwargs):
        queryset.update(exported=True)

django导入导出没有从文档中指定这一点。另外,在我检查的源代码中,sender为none,just ignore sender,django导入导出没有从文档中指定这一点。在我检查的源代码中,发送者是非,忽略发送者