在 Django 中以编程方式同步数据库

发布于 2024-08-31 01:51:07 字数 424 浏览 2 评论 0原文

我正在尝试从视图同步我的数据库,如下所示:

from django import http
from django.core import management

def syncdb(request):
    management.call_command('syncdb')
    return http.HttpResponse('Database synced.')

问题是,它将通过从终端请求用户输入来阻止开发服务器。如何向其传递 '--noinput' 选项以防止询问我任何问题?

我有其他方法将用户标记为超级用户,因此不需要用户输入,但我确实需要以编程方式调用 syncdb (和 flush),而不需要记录通过 ssh 连接到服务器。任何帮助表示赞赏。

I'm trying to sync my db from a view, something like this:

from django import http
from django.core import management

def syncdb(request):
    management.call_command('syncdb')
    return http.HttpResponse('Database synced.')

The issue is, it will block the dev server by asking for user input from the terminal. How can I pass it the '--noinput' option to prevent asking me anything?

I have other ways of marking users as super-user, so there's no need for the user input, but I really need to call syncdb (and flush) programmatically, without logging on to the server via ssh. Any help is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狠疯拽 2024-09-07 01:51:07
management.call_command('syncdb', interactive=False)
management.call_command('syncdb', interactive=False)
姜生凉生 2024-09-07 01:51:07

工作原理如下(至少在 Django 1.1 中):

from django.core.management.commands import syncdb
syncdb.Command().execute(noinput=True)

Works like this (at least with Django 1.1.):

from django.core.management.commands import syncdb
syncdb.Command().execute(noinput=True)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文