2017-08-01 3 views
0

私はループを使ってある種の方法でモデルに値を設定する母集団スクリプトを作ろうとしています。ここでは、コードがどのように見えるかです:ループを使ってDjangoにモデルを移植する

models.py

class ExampleModel(models.Model): 
    name = models.CharField(max_length=32) 
    code = models.CharField(max_length=3) 
    description = models.TextField(max_length=128) 

TEXT.TXT

001 Name One 
    Description one 
    Description one line two 
023 Name Two 
    Description two 
    Description two line two 
    Description two line three 
AAA Name Three 
BBB Name Four 
    Description three 

今populate.py

def populate(): 
    with open("text.txt") as f: 
     content = f.readlines() 

    for line in content: 
     fields = line.split(' ', 1) 
     if len(fields[0]) == 3 and (fields[0].strip().isupper() or fields[0].strip().isdigit()): 
      code = fields[0].strip() 
      name = fields[1].strip() 
      print("%s-%s" % (code, name)) 
      add_object(name=name, code=code) 

def add_object(name, code, periship_amount): 
    f = ExampleModel.objects.get_or_create(name=name, code=code)[0] 
    return f 

if __name__ == '__main__': 
    populate() 

、人口スクリプトことができます3文字の文字列で始まる行をすべて2行に分け、3文字の文字列をコードに変換します。残りの文字列を名前に追加します。私がしたいのは、テキスト全体(その中に記述があるもの)を1つのコード名の行の下に置き、上のコード名の記述フィールドに等しくすることです。誰もpopulate.pyでそのループを書く方法を知っていますか?ありがとうございました。

答えて

0

poupulationにはdumpdataとloaddataを使用することをお勧めします。

dumpdataを使用すると、dbのデータを含むファイルを取得できます。また、loaddataを使用すると、これらのフィクスチャをdbにロードできます。

https://docs.djangoproject.com/en/2.0/howto/initial-data/

関連する問題