python 如何将Excel文件导入Django中的表

3z6pesqy  于 11个月前  发布在  Python
关注(0)|答案(2)|浏览(145)

我有这个模型来存储有关计算机的信息。我试图添加一个功能,直接导入包含数据的Excel文件,而不是在表格中输入数据,以防有大量的数据输入。
models.py

class Product(models.Model):
    
    model=models.CharField(max_length=50, null=True)
    serial=models.CharField(max_length=50, null=True)
    hd_size=models.CharField(max_length=50,null=True)
    ram=models.CharField(max_length=50, null=True)
    processor=models.CharField(max_length=50, null=True)
    date_created = models.DateTimeField(default=timezone.now)
    date_updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.serial + ' - ' + self.model

字符串
Views.py

@login_required
def product_mgt(request):
    context['page_title'] = "Computer List"
    products = Product.objects.all()
    context['products'] = products

    return render(request, 'product_mgt.html', context)


Forms.py

class SaveProduct(forms.ModelForm):
    model= forms.CharField(max_length=50,)
    serial= forms.CharField(max_length=50, )
    hd_size= forms.CharField(max_length=50, )
    ram= forms.CharField(max_length=50, )
    processor= forms.CharField(max_length=50, )

    class Meta:
        model = Product
        fields = ('model','serial','hd_size','ram', 'processor')

    def clean_serial(self):
        id = self.instance.id if self.instance.id else 0
        serial = self.cleaned_data['serial']
        try:
            if int(id) > 0:
                product = Product.objects.exclude(id=id).get(serial = serial)
            else:
                product = Product.objects.get(serial = serial)
        except:
            return serial
        raise forms.ValidationError(f"{serial} Computer Already Exists.")

5f0d552i

5f0d552i1#

您可以使用Django import / export库来实现您的目标。此外,您可以轻松地将模型导出到excel。

ncecgwcz

ncecgwcz2#

要在Django中使用django-import-export库从Excel文件导入数据,您可以按照以下步骤操作:
1.安装django-import-exportpip install django-import-export
1.将'import_export'添加到Django项目的settings.pyINSTALLED_APPS列表中:
1.创建一个资源类,定义如何使用django-import-export为模型导入/导出数据

class  ProductResource(resources.ModelResource):
    class  Meta:
        model  =  Product
        fields = ("__all__")

字符串
1.为你的模型创建一个Django管理类,并使用ProductResource导入/导出:

from django.contrib import admin
from import_export.admin import ImportExportModelAdmin

from .models imort Product
from .resources import ProductResource 

@admin.register(Product)
class ProductModelAdmin(ImportExportModelAdmin):
    resource_class = ProductResource


1.现在,您应该能够使用Django管理界面以Excel格式导入/导出模型的数据。
请记住在对模型进行更改后运行python manage.py makemigrationspython manage.py migrate
现在,当你访问模型的Django管理界面时,你应该看到允许你处理Excel文件的导入/导出选项。

相关问题