我可以在 Django 视图中破坏性地更改我的数据库吗?
Posted
技术标签:
【中文标题】我可以在 Django 视图中破坏性地更改我的数据库吗?【英文标题】:Can I Destructively Alter My Database in a Django View? 【发布时间】:2018-08-03 21:47:13 【问题描述】:所以我正在加载我的查询集以发送到我的模板。其中一个对象是事故。
现在,每个事件都有一堆属性,比如“状态”和“员工”,所以在我的模板中我可以这样做
// incident.html //
% for incident in incidents %
<h1> incident.employee - incident.status </h1>
% endfor %
现在,为方便起见,我想添加事件之前不存在的新属性,例如“情绪”或其他,我可以添加
// views.py //
def get_context_data(self, **kwargs):
...
for incident in incidents:
incident.mood = "scary"
然后在我的模板中,我可以访问 event.mood 以及 event.status 和 event.employee。
// incident.html //
% for incident in incidents %
<h1> incident.employee - incident.status </h1>
<h3> It was very incident.mood </h3>
% endfor %
所以,我想知道的是,如果我在这里不小心,是否有可能搞砸并破坏性地更改数据库?如果我添加
// views.py //
def get_context_data(self, **kwargs):
...
for incident in incidents:
incident.employee = "Daffy Duck"
我是否会毁掉我的所有数据,并在我的每一次事件中永久地将员工的名字命名为“唐老鸭”?
提前致谢。
【问题讨论】:
【参考方案1】:只要您不使用.update()
进行更改或在进行更改后致电.save()
,这些更改都不会在您的数据库中进行。否则更改只是存储在内存中,因此不是永久的。
【讨论】:
谢谢!我现在对即将到来的生产合并不那么害怕了。以上是关于我可以在 Django 视图中破坏性地更改我的数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章