2016-05-11 8 views
1

私はCsvを既に存在するモデルにインポートするアプリケーションを作成する必要があるDjangoプロジェクトで作業します(私はこのモデルを変更できません)。 exempleについてはCsvDataException:無効なフィールド数

、私は3つのフィールドが含まれていSates( "ペイ")モデルを持っている:名前、コード、および国籍:

class Pays(models.Model): 
pays = models.CharField(max_length=150) 
codeiso3166alpha2 = models.CharField(max_length=2) 
nationalite = models.CharField(max_length=50, null=True, blank=True) 
maj = models.DateTimeField(auto_now=True) 
class Meta: 
    db_table = u'Pays' 
def __unicode__(self): 
    return self.pays 

ここでは私のcsvファイルの小便です:

AFGHANISTAN;AF;Afgane 
AFRIQUE DU SUD;ZA;Sud-africaine 
ALBANIE;AL;Albanaise 

そのために、私はモジュール "django-adaptator"を使いました。ここで働く私の最初のコードは、あるデータをインポートaswellされています

"remplirPays" という名前の私のアプリケーションのmodels.py:ここ

# coding: utf-8 

from django.db import models 
from adaptor.model import CsvModel 
from adaptor.fields import CharField, IntegerField, FloatField 

from polyc2n.models import Pays #that is the model that already exists 


class MyCSVModel(CsvModel): 

    name = CharField (match = "pays") 
    abrev = CharField (match ="codeiso3166alpha2") 
    nationalite = CharField (match ="nationalite") 

    class Meta: 
     delimiter = ";" 
     has_header = True 
     dbModel = Pays 

は私のviews.pyです:

# coding: utf-8 
from django.shortcuts import render 
from django.http import HttpResponse 
from adaptor.model import CsvModel 
from remplirPays.models import MyCSVModel 


path = "pays.csv" 

def DataPays(request): 
    MyCSVModel.import_data(data = open(path)) 
    return HttpResponse("Import is ok") 

しかし、私のコードを最適化し、somoneが簡単に使えるようにするために、私はCsvModelではなくCsvModelを使用したいと思います.Djangoモデルは既に存在していますが、CSVモデルを再宣言したくありません。ここで

が問題であり、私のコードは、次のいずれかです。

models.py:

# coding: utf-8 
from django.db import models 
from polyc2n.models import Pays 
from adaptor.model import CsvDbModel 

class MyCSVDbModel(CsvDbModel): 
    class Meta: 
     dbModel = Pays 
     delimiter = ";" 
     has_header = True 

私のviews.py:

# coding: utf-8 
from django.shortcuts import render 
from django.db import models 
from polyc2n.models import Pays 
from adaptor.model import CsvDbModel 
from remplirPays.models import MyCSVDbModel 
from django.http import HttpResponse 

path = "pays.csv" 

def DataPays(request): 
    MyCSVDbModel.import_data(data = open(path)) 
    return HttpResponse("import is ok") 

と私が実行したときに、私が得ましたエラー:

I私の最初のコードがうまくいったときになぜこれが得られるのかわかりません....

私はあなたが私の助けを借りて読んでくれることを願っています。

シモンズ:私は私の英語のために謝罪、私はネイティブスピーカーではないと私は私の最高の

答えて

0

を行うにしようと試み、あなたが必要なフィールドを提供したカスタマイズモデルで、あなたが持っている第二の時間を使用していた前のかもしれませdjangoが提供しているものをモデル化しました。これは、必要なフィールドを含んでいないか、データベースにインポートしようとしているので、この例外を表示します。

あなたは、 .pyとしては、

# coding: utf-8 
from django.db import models 
from polyc2n.models import Pays 
from adaptor.model import CsvDbModel 
class MyCSVDbModel(CsvDbModel): 
    name = CharField (match = "pays") 
    abrev = CharField (match ="codeiso3166alpha2") 
    nationalite = CharField (match ="nationalite") 
    class Meta: 
     dbModel = Pays 
     delimiter = ";" 
     has_header = True 
+0

CvsDbModelを使用してのpuroposeはあなたがCsvModelではなくを使用する必要がありますので、1を再宣言する場合は、CSVモデルを再宣言する必要はありませんということですCsvDbModel – Lydia

0

SOLUTION:それはDjangoのadminに示されていない場合でも、より "MAJ" attributはテーブルペイ:

maj = models.DateTimeField(auto_now=True) 

が考えられています。だから私は彼を除外しなければならなかった:

class Meta: 
    exclude = ['maj'] 
関連する問題