如何使用Python列表向Django数据库输入数据?

0 投票
2 回答
606 浏览
提问于 2025-04-17 23:45

假设我有一个django模型,里面有一个字段。

class Category(models.Model):
    cat_name = models.CharField(max_length = 200)

还有一个python脚本叫做list.py

def getList():
   name_list = ['a','b','c']
   return name_list

我该怎么调用getList来创建三个条目:a、b、c,让它们在django中成为三个独立的分类条目呢?我可以把它们放在同一个文件夹里,然后把getList导入到我网站目录中的一个文件里运行吗?或者我可以在终端里运行它吗?

谢谢。

2 个回答

0

你可以使用bulk_create方法,具体可以查看这个链接:https://docs.djangoproject.com/en/dev/ref/models/querysets/#bulk-create

在你的情况下:

Category.objects.bulk_create([Category(cat_name=name) for name in getList()])
1

你可以选择其中一种方法。如果你想要一个可以重复使用的东西,建议你创建一个叫“initial_data.json”的文件,这样每次运行 syncdb 时都会加载这个文件。如果你只是想要一个临时的解决方案,或者只运行一次,那你可以像下面这样做,假设所有文件都在同一个目录下:

from .list import get_list


class Category(models.Model):
    cat_name = models.CharField(max_length=200)

    def __unicode__(self):
        return self.cat_name

    @classmethod
    def create_from_list(cls):
        values_list = get_list()
        for value in values_list:
            cls.objects.create(cat_name=value)

然后在视图中,或者其他地方,你可以执行这个类方法:

# views.py

from .models import Category


def my_view(request):
    Category.create_from_list()
    ...

想了解更多关于数据文件的信息,可以查看这个链接:https://docs.djangoproject.com/en/1.6/howto/initial-data/

撰写回答