可以在Django中自动删除过时的内容类型吗?

时间:2013-09-18 10:09:26

标签: django django-south

我正在使用PyQt应用程序,该应用程序使用Django将其内容提供给桌面用户。

在最新的更新中,我们有Django存储在数据库中的陈旧内容类型,并且在应用程序启动时,South的migrate或syncdb提供删除它们。是否可以通过调用migrate / syncdb来自动删除这些内容?

由于显而易见的原因,此提示无法向最终用户公开,所以我真的希望有一些方法可以自动解决这个问题:)

我已经看到,通过南迁移,您可以拨打--noinput,但这不会删除它们,如果我们能够做到这一点会很好,因为我们知道它会安全。

2 个答案:

答案 0 :(得分:18)

在unix系统上有一个命令Signal<T>,它会重复输出一个字符串到stdout,用换行符分隔。我们可以使用它来自动回答此提示。

/* Signal Container */ template <typename Ret> class Signal; template <typename Ret, typename... Args> class Signal<Ret(Args...)> {}; /* Emitter Type */ template <typename... Args> class Emitter; template <typename T> class Emitter<Signal<T> > { // definition of class with single signal }; template <typename T, typename... Args> class Emitter<Signal<T>, Args...> { // definition of class with MORE THAN one signal }; /* Signals */ using Signal_A = Signal<void()>; using Signal_B = Signal<void(int)>; using Signal_C = Signal<void(int, float)>; /* Desired Usage */ class MyType : public Emitter<Signal_A, Signal_B, Signal_C> {}; int main() { MyType x; }

答案 1 :(得分:1)

当我进行Django迁移时,我使用此命令在脚本中自动回答“是”:

cat <(echo "yes") - | ./manage.py syncdb --migrate

请注意,这只会处理第一个提示。您可以在此处详细了解其工作原理以及如何在第二个提示中添加自动答案的详细信息:

https://stackoverflow.com/a/16347534/1636882