Найти - Пользователи
Полная версия: Validate, CharFiled - непринимаем, FloatField - праходит validation.
Начало » Django » Validate, CharFiled - непринимаем, FloatField - праходит validation.
1
kutuzzik
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 = ''
    

nnmware
Рискну предположить что никто практически ничего не понял что Вы хотите, потому все и молчат.

Так вообще перечитав 5 раз - лично мое мнение:
Я бы не использовал непонятно зачем нужный csvImporter, а просто бы прочитал файл построчно, дернул значения в словарь, проверил и записал в базу как надо.
валидатор для нужного значения тогда бы наверное такой был
def validate_float(val):
    try:
        return float(val.replace(',','.'))
    except:
        return False

И научитесь яснее выражаться. Сколько вешать в граммах, кокаин все-таки (с)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB