Форум сайта python.su
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}))
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 = ''
Офлайн
Рискну предположить что никто практически ничего не понял что Вы хотите, потому все и молчат.
Так вообще перечитав 5 раз - лично мое мнение:
Я бы не использовал непонятно зачем нужный csvImporter, а просто бы прочитал файл построчно, дернул значения в словарь, проверил и записал в базу как надо.
валидатор для нужного значения тогда бы наверное такой был
def validate_float(val): try: return float(val.replace(',','.')) except: return False
Отредактировано nnmware (Фев. 18, 2013 03:36:04)
Офлайн