Django:将行插入数据库

Posted

技术标签:

【中文标题】Django:将行插入数据库【英文标题】:Django: Insert row into database 【发布时间】:2014-07-15 03:48:14 【问题描述】:

我是 Django 的新手。我通过将模型插入models.py 创建了一个表。

现在,我想在数据库中插入一行 - 表 Dodavatel。我知道,我必须创建一个具有属性作为列的对象。但我不知道我应该把这段代码放在哪里。在models.py?

这是我的模型:

class Dodavatel(models.Model):
    nazov = models.CharField(default='', max_length=255)
    dostupnost = models.IntegerField(default=0)

这是插入一行的代码:

p = Dodavatel(nazov='Petr', dostupnost=1)
p.save()

我应该把这段代码放在哪里?

【问题讨论】:

首先运行“python manage.py syncdb”创建数据库。然后,您可以根据您的模型添加行。通常这是在 View 函数中完成的。 【参考方案1】:

如果您只想快速测试您的模型,您可以启动一个交互式 shell 并在那里执行您的代码。

python manage.py shell

上面的命令启动了一个用你的 Django 项目设置初始化的 python 交互式 shell。

然后你可以这样做:

from your_app_name.models import Dodavatel
p = Dodavatel(nazov='Petr', dostupnost=1)
p.save()

我不建议直接在视图中使用该代码。而不是创建一个项目,我会使用基于类的视图,如CreateView

【讨论】:

我写了一个脚本,将行插入到数据库中。所以这在我的 script.py 中:views.add_Dodavatel("petr", 1) 这在 views.py 中:def add_Dodavatel(nazov,dostupnost): p = Dodavatel(nazov=nazov, dostupnost=dostupnost) p.save () 但是当我运行 script.py 时出现错误:new 中的文件“C:\Python27\lib\site-packages\django\db\models\base.py”,第 92 行kwargs = "app_label": model_module.__name__.split('.')[-2] IndexError: list index out of range 您不应在手动执行的脚本中从您的 views.py 中调用函数。视图应该由 django 请求-响应循环调用。如果您想创建一个脚本来在您的数据库中插入批量数据,您应该查看:docs.djangoproject.com/en/dev/howto/custom-management-commands

以上是关于Django:将行插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 DataAdapter 不会将行插入到数据库中?

将行插入数据集后的数据库更新

如何使用 SQL for 循环将行插入数据库?

无法从 Hibernate 项目将行插入 H2 数据库

如何将行从另一个数据库文件插入到房间数据库中?

从 viewdidload 将行插入到 tableview