Django导入导出有错误“;Tablib没有格式';无';或者它没有注册;
我试图在我的应用程序中实现csv导入,但出现此错误,Django导入导出有错误“;Tablib没有格式';无';或者它没有注册;,django,django-import-export,Django,Django Import Export,我试图在我的应用程序中实现csv导入,但出现此错误, Tablib没有格式“None”或未注册。 我正在使用python 3.5和Django 2.2。 我在Python2.7和Django 1.8中尝试了相同的代码,效果很好。我的代码有问题吗 我的模型: class Stock(models.Model): category = models.ForeignKey(Category, on_delete=models.CASCADE, blank=True) item_name
Tablib没有格式“None”或未注册。
我正在使用python 3.5和Django 2.2。
我在Python2.7和Django 1.8中尝试了相同的代码,效果很好。我的代码有问题吗
我的模型:
class Stock(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE, blank=True)
item_name = models.CharField(max_length=50, blank=True, null=True)
quantity = models.IntegerField(default='0', blank=False, null=True)
receive_quantity = models.IntegerField(default='0', blank=True, null=True)
receive_by = models.CharField(max_length=50, blank=True, null=True)
issue_quantity = models.IntegerField(default='0', blank=True, null=True)
issue_by = models.CharField(max_length=50, blank=True, null=True)
issue_to = models.CharField(max_length=50, blank=True, null=True)
phone_number = models.CharField(max_length=50, blank=True, null=True)
created_by = models.CharField(max_length=50, blank=True, null=True)
reorder_level = models.IntegerField(default='0', blank=True, null=True)
last_updated = models.DateTimeField(auto_now_add=False, auto_now=True)
def __str__(self):
return self.item_name
资源.py
from import_export import resources
from .models import Stock, Person
class StockResource(resources.ModelResource):
class Meta:
model = Stock
Views.py:
from .resources import StockResource
def upload(request):
if request.method == 'POST':
stock_resource = StockResource()
dataset = Dataset()
new_stock = request.FILES['myfile']
imported_data = dataset.load(new_stock.read())
result = stock_resource.import_data(dataset, dry_run=True) # Test data import
if not result.has_errors():
stock_resource.import_data(dataset, dry_run=False) # Run import
return render(request, 'csv_import.html')
csv_import.html
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="myfile"><br><br>
<button type="submit">Upload</button>
</form>
以下几点需要注意:
imported_data=Dataset().load(new_stock.read().decode(),format='csv',headers=False)
打印(导入的数据)
如果不起作用,请准确验证从
new\u stock.read()
返回的内容。它是有效的csv数据吗?在服务器上测试之前,您可以在本地进行测试。谢谢您的回复。错误现已消失,但数据未保存到数据库中。我猜CSV文件有问题。我现在正在尝试限制字段并进行另一项测试。如何测试它是否为有效的CSV数据?如果数据集的创建正常,则应该可以。只需添加print(imported_data)
即可,如果它呈现格式化数据,则它是有效的,这可能会帮助您调试数据未导入的原因(确保属性和列设置正确,确保字段已定义)
1,phone,1,0,9,0,9,9,9,,ssaine,0,2020-06-11,
2,computer,2,0,9,0,9,9,9,9,ssaine,0,2020-08-11,