简体   繁体   English

CSV未映射到Django模型

[英]csv not mapping into django model

I have a code that should run but isn't running. 我有一个应该运行但没有运行的代码。 I have done massive amount of research and It's getting frustrating but it seems I just need a fresh pair of eyes. 我已经做了大量的研究,并且越来越令人沮丧,但似乎我只需要一双新鲜的眼睛即可。
I have used csv importer and tweaked it a bit. 我使用过csv importer并对其进行了一些调整。
The code should upload csv, and read the columns into django fields! 该代码应上传csv,然后将列读入django字段! Viola! 中提琴! Not hard. 不难。
In models.py I have: 在models.py中,我有:

from adaptor.model import CsvModel
from application.models import Analysis

class CSV(CsvModel):  
    csv_file     = models.FileField(upload_to=upload_to)  
    political_environment = DecimalField()
    GDP_per_capita = DecimalField()
    economic_diversification= DecimalField()
    inflation= DecimalField()
    monetary_credibility= DecimalField()
    access_to_finance= DecimalField()
#This is my major issues as An error keeps popping up saying 
#"Analysis model isn't defined" for dbModel despite defining it at the start
class Meta:
    dbModel = Analysis
    delimiter = ","

class Analysis
    class Meta:
        ordering = ['country']
        verbose_name = _('Analysis')

    political_environment = DecimalField()
    GDP_per_capita = DecimalField()
    economic_diversification= DecimalField()
    inflation= DecimalField()
    monetary_credibility= DecimalField()
    access_to_finance= DecimalField()

In forms.py I have: from credit.models import CSV 在forms.py中,我有:从credit.models导入CSV

class CSVForm(forms.ModelForm):
    class Meta:
        model = CSV

key_to_field_map = getattr(settings, 'CSVIMPORTER_KEY_TO_FIELD_MAP', lambda k: k.replace(' ','_').lower())

Views 查看

from credit.models import CSV
from credit.forms import CSVForm,

def new(request):    
   if request.method == 'POST':    
        form = CSVForm(request.POST, request.FILES)    
        if form.is_valid():    
            instance = form.save()    
            request.user.message_set.create(message='Uploaded CSV. Please associate fields below.')    
            return HttpResponseRedirect(reverse('associate-csv',args=[instance.id]))
    else:    
        form = CSVForm()    
    return render_to_response('new.html',     
        {'form':form}, context_instance=RequestContext(request)) 

html HTML

{% block content %}

<div id="content-main">
    <h2>Upload CSV</h2>
    <form action="." method="post" accept-charset="utf-8" enctype="multipart/form-data">
        <table>
            {{form.as_table}}
        </table>
        <input type="submit" class="submit" />
    </form>
</div>

<div class="accordion-body collapse{% if form.errors %} in{% endif %}" id="Data">
        <div class="accordion-inner row-fluid" label for="id_Data">
            <div class="span5">

                {% control form.political_environment %}
                {% control form.GDP_per_capita %}
                {% control form.economic_diversification %}
                {% control form.inflation %}
                {% control form.monetary_credibility %}
                {% control form.access_to_finance %}
</div>
    </div>
        </div>

admin.py admin.py

class AnalysisAdmin(admin.ModelAdmin):
    class Media:        
        change_form_template = 'application/upload_csv.html'
        add_form_template = 'application/upload_csv.html'    

What am I doing wrong or not doing right? 我做错了什么或做错了什么? This is meant to be simple but its getting frustration. 这本来很简单,但令人沮丧。 Any help will do. 任何帮助都可以。 PS: I'm new to django Thanks! PS:我是django的新手,谢谢!

in your models.py first define Analysis and then define CSV like this: 在您的models.py先定义Analysis ,然后再定义CSV如下所示:

from django.db import models
from adaptor.model import CsvModel
from application.models import Analysis

class Analysis(models.Model)
    class Meta:
        ordering = ['country']
        verbose_name = _('Analysis')

    political_environment = DecimalField()
    GDP_per_capita = DecimalField()
    economic_diversification= DecimalField()
    inflation= DecimalField()
    monetary_credibility= DecimalField()
    access_to_finance= DecimalField()

class CSV(CsvModel):  
    csv_file     = models.FileField(upload_to=upload_to)  
    political_environment = DecimalField()
    GDP_per_capita = DecimalField()
    economic_diversification= DecimalField()
    inflation= DecimalField()
    monetary_credibility= DecimalField()
    access_to_finance= DecimalField()
#This is my major issues as An error keeps popping up saying 
#"Analysis model isn't defined" for dbModel despite defining it at the start
class Meta:
    dbModel = Analysis
    delimiter = ","

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM