【问题标题】:Populating a model in Django using loops使用循环在 Django 中填充模型
【发布时间】:2018-02-02 08:35:51
【问题描述】:

我正在尝试制作一个填充脚本,以某种方式使用循环填充模型。下面是代码的样子:

models.py

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

文本.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

填充.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()

现在,填充脚本可以将任何以三字符字符串开头的行分成两部分,将三字符字符串作为代码,将字符串的其余部分作为名称。我想要做的是使整个文本(其中包含描述的文本)在一个代号行下方和另一行上方等于上面代号的描述字段。有谁知道如何在 populate.py 中编写该循环?谢谢。

【问题讨论】:

    标签: python django populate


    【解决方案1】:

    您最好将 dumpdata 和 loaddata 用于种群。

    使用dumpdata,您可以从数据库中获取包含数据的文件,使用loaddata,您可以将这些固定装置加载到数据库中。

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

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 2012-12-23
      • 2019-07-30
      • 2018-12-22
      • 2013-06-25
      • 2021-11-16
      • 2018-12-27
      • 2017-12-01
      • 1970-01-01
      相关资源
      最近更新 更多