如何使用Python列表向Django数据库输入数据?
假设我有一个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/。