from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from debt_reminder.forms import UploadFileForm, DebtFormSet from django.template import RequestContext from debt_reminder.models import DebtCsv, Debt def upload_file(request): """ :param request: :return: """ zinute ='Prasome idekite cvs faila ' formset = None if request.method == 'POST': form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): failas = form.cleaned_data['file'] lines = DebtCsv.import_data(data = failas.file) line_number = 0 debtformset_data = [] for line in lines: debtformset_data.append({ 'phone': line.phone, 'user_id': line.user_id, 'amount': line.amount, 'project_id': form.cleaned_data['project_id'], }) # debt = Debt(phone = line.phone, user_id = line.user_id, amount= line.amount, project_id = form.cleaned_data['project_id']) # debt.save() formset = DebtFormSet(initial=debtformset_data) else: form = UploadFileForm() return render_to_response('upload.html', RequestContext(request, {'form': form, 'zinute': zinute, 'debt_formset': formset}))
Privet vsem, mne nuzno pravilno dobavit validate punkt, katorij proverialbi cvs fail > CharField blokiroval, a FloatFiel razresilbi pereiti na drugoj url upload_save i tam razmestilbi upload file.
MODELS.PY viglidit tak:
from csvImporter.model import CsvModel import csvImporter from django.db import models class SmartCharField(csvImporter.fields.Field): field_name = "Smart float number" def to_python(self, value): return float(value.replace(",",".")) class Project(models.Model): #question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Debt(models.Model): phone = models.CharField(max_length=120) user_id = models.CharField(max_length=120) amount = models.CharField(max_length=90) project_id = models.ForeignKey(Project) class DebtCsv(CsvModel): phone = csvImporter.fields.CharField() user_id = csvImporter.fields.CharField() amount = SmartCharField() class Meta: delimiter = "," has_header = True #class DebtFormSet() class Person(models.Model): class Admin: list_display = ['name', 'select'] name = models.CharField(max_length=90) def select(self): return '<input type="checkbox" name="person" value="%s"/>' % self.id #select.allow_tags = True select.short_description = ''