Я использую пакет django-import-export.Мне нужно каждый раз, когда пользователь отправляет таблицу .csv, создать столбец в файле .csv и заполнить каждую строку зарегистрированным пользователем.Я сделал следующее:
В моем файле resources.py:
class ProductListResource(resources.ModelResource):
class Meta:
model = ProductList
skip_unchanged = True
report_skipped = True
exclude = ('id',)
import_id_fields = ('sku',)
В моем файле models.py:
class ProductList(models.Model):
sku = models.CharField(primary_key=True, max_length=200)
client = models.ForeignKey(get_user_model(), default=1, on_delete=models.CASCADE)
name = models.CharField(max_length=256)
description = models.CharField(max_length=1000)
storage = models.CharField(max_length=256)
cost_price = models.CharField(max_length=256)
sell_price = models.CharField(max_length=256)
ncm = models.CharField(max_length=256)
inventory = models.IntegerField(null=True)
И, наконец, в моем views.pyfile:
def simple_upload(request):
if request.method == 'POST':
product_resource = ProductListResource()
product_resource.Meta.model.client = request.user.id
dataset = Dataset()
new_product_table = request.FILES['myfile']
dataset.load(new_product_table.read().decode('utf-8'), format='csv')
result = product_resource.import_data(dataset, dry_run=True) # Test the data import
if not result.has_errors():
product_resource.import_data(dataset, dry_run=False) # Actually import now
context = {'product_list': ProductList.objects.filter(client=request.user.id).all()} #.filter(client=request.user.username)
return render(request, 'Clientes/import.html', context)
Моя проблема в том, что в таблице появляется, что значение было изменено, но если я щелкну в объекте, на странице администратора, выбранный пользователь будет первым.