我有两张桌子:
class Foo(models.Model):
pass
class Bar(models.Model):
foobar = models.ForeignKey(Foo, unique=True)
barfoo = models.ForeignKey(Foo, unique=True)
验证可确保永远不会Foo
同时为foobar
和barfoo
。我需要删除Bar
模型和Foo
的所有barfoo
。我的方法是从Bar.barfoo
中删除外键约束,运行一些SQL来删除Foo
的所有barfoo
,然后删除模型。我似乎无法在django迁移文档中找到任何可以删除Django动态生成的外键约束的内容。想法?
答案 0 :(得分:-1)
创建一个删除'foobar'并更改'barfoo'的迁移,添加CASCADE DELETION行为。运行此迁移,删除数据库中的所有Bar对象,最后从模型文件中删除Bar模型并生成新的迁移。
确保您的模型上没有任何通用外键(或者您将获得django_contenttypes表上的陈旧数据)。
就是这样。