小编vau*_*och的帖子

使用Django/South重命名模型的最简单方法?

我一直在寻找南方网站,谷歌和SO的答案,但找不到一个简单的方法来做到这一点.

我想用South重命名一个Django模型.说你有以下内容:

class Foo(models.Model):
    name = models.CharField()

class FooTwo(models.Model):
    name = models.CharField()
    foo = models.ForeignKey(Foo)
Run Code Online (Sandbox Code Playgroud)

并且你想将Foo转换为Bar,即

class Bar(models.Model):
    name = models.CharField()

class FooTwo(models.Model):
    name = models.CharField()
    foo = models.ForeignKey(Bar)
Run Code Online (Sandbox Code Playgroud)

为了简单起见,我只是尝试将名称从更改FooBar,但暂时忽略该foo成员FooTwo.

使用南方最简单的方法是什么?

  1. 我可能会进行数据迁移,但这似乎很复杂.
  2. 编写自定义迁移,例如db.rename_table('city_citystate', 'geo_citystate'),但在这种情况下我不确定如何修复外键.
  3. 你知道一种更简单的方法吗?

python django rename django-models django-south

141
推荐指数
3
解决办法
3万
查看次数

Django ipython shell中%autoreload的正确配置是什么?

Ipython有一个名为autoreload的插件,可能会在每个命令后重新加载所有模块,因此您可以更改源代码而不必退出shell并重新输入所有命令.例如,请参阅http://dsnra.jpl.nasa.gov/software/Python/tips-ipython.html.

然而,当它与Django一起使用时,这看起来最好是片状的,例如python manage.py shell给我一个带有Django上下文的IPython shell,但是自动重载似乎根本不可靠.

这是我添加到ipy_user_conf.py文件中的内容:

def main():
    ... # rest of the fn here
    import ipy_autoreload
    ip.magic('%autoreload 2')

自动上载在有限的情况下工作,可能有10-20%的时间.有没有人成功配置这个与Django一起工作?

django shell reload ipython

7
推荐指数
1
解决办法
1536
查看次数

Pythonize Me:如何在Python中管理调用者上下文变量?(Python的/ Django的)

我正在尝试在Django中重构一个相当重要的视图函数.浮动的变量太多了,这是一个巨大的功能.

理想情况下,我想将视图模块化为逻辑函数.但是,我必须传递函数上下文以便轻松访问变量.

例如:

def complex_view(request, slug):
    some complex logic which creates variable abc ...
    ...
    some more complex logic which uses variable abc ...
    ...
    etc.
Run Code Online (Sandbox Code Playgroud)

应该变得像:

def complex_view(request, slug):
    process_X()
    ...somehow pass variables and context to next function...
    process_Y()
    ... 
    etc.

def process_X():
    ...

def process Y():
    ...
Run Code Online (Sandbox Code Playgroud)

我可以想到几种方法来实现这一点,其中一些方法在本页中有所指出:http: //mail.python.org/pipermail/tutor/2009-February/067506.html

一个.主视图中定义的子功能.这看起来很糟糕,因为很难分辨哪些变量是共享的,哪些不是.

传递locals()中作为字典.这也是kludgey,因为现在有两种不同的方式来访问变量:xyzcontextDict['xyz'].你必须在呼叫中使用一个N,并N+1在堆栈中调用下一个.

C.暴力将所有变量传递给每个函数调用并返回相关的变量.当涉及到很多变量时,这变得非常乏味.

d.在C++/C#中,我只需创建一个类MyComplexViewContext,定义所有共享变量,并创建成员函数来执行工作.然后你可以使用self.xyz该类中的所有内容.我想我也可以在Python中使用这个方法.不知道这是不是最好的方法.

你对Python/Django中首选的方法有什么看法?

python django django-context

4
推荐指数
1
解决办法
1497
查看次数