Django:当可重用的南方应用程序具有user_post_save信号时,初始syncdb上的OperationalError

时间:2014-03-10 21:20:02

标签: django django-south

我有一个应用程序,它集成了django-invitation的分叉版本,它修改了原始模型。因此,它需要使用south来迁移现有数据库。

问题:

如果我使用新数据库全新安装我的应用程序,当初始syncdb发生并创建超级用户时,django-invitation应用程序会收到user_post_save信号并尝试创建一个invitation_user ...因为它是一个南部应用程序,它的数据库表尚未构建,当然会触发数据库错误。

处理此问题的推荐方法是什么?

想法1)在尝试保存之前检查数据库中是否存在表,但是每次创建用户时都需要额外的数据库命中。

想法2)

Try: 
    invitation_user.save() 
except:
    from django.db import connection
    connection.close()

是否必须有更好的方法......

1 个答案:

答案 0 :(得分:0)

由于没有人插话,我想最好的办法就是按照我原来的想法#2:

Try: 
    #code that could fail on new database creation here
except OperationalError:
    from django.db import connection
    connection.close()

自从我原来的问题以来,我一直在测试它,它看起来效果很好。