在Django中删除外键约束

时间:2015-04-06 22:19:05

标签: python django postgresql django-migrations

我有两张桌子:

class Foo(models.Model):
    pass

class Bar(models.Model):
    foobar = models.ForeignKey(Foo, unique=True)
    barfoo = models.ForeignKey(Foo, unique=True)

验证可确保永远不会Foo同时为foobarbarfoo。我需要删除Bar模型和Foo的所有barfoo。我的方法是从Bar.barfoo中删除外键约束,运行一些SQL来删除Foo的所有barfoo,然后删除模型。我似乎无法在django迁移文档中找到任何可以删除Django动态生成的外键约束的内容。想法?

1 个答案:

答案 0 :(得分:-1)

创建一个删除'foobar'并更改'barfoo'的迁移,添加CASCADE DELETION行为。运行此迁移,删除数据库中的所有Bar对象,最后从模型文件中删除Bar模型并生成新的迁移。

确保您的模型上没有任何通用外键(或者您将获得django_contenttypes表上的陈旧数据)。

就是这样。