簡體   English   中英

如何使Django sqlclear輸出CASCADE用於依賴關系

[英]How to make Django sqlclear output CASCADE for dependent relationships

我在Django項目中有許多包含外鍵和多對多(m2m)關系的模型。 當我嘗試使用來自manage.py的sqlclear命令時,收到錯誤消息:

ERROR:  cannot drop table appname_tablename because other objects depend on it

有沒有辦法讓Django將CASCADE添加到輸出中,以便可以刪除依賴表?

為什么不使用sed?

>>> ./manage.py sqlclear testapp | sed 's/";/" CASCADE;/' 
BEGIN;
DROP TABLE "testapp_person" CASCADE;
DROP TABLE "testapp_post" CASCADE;
DROP TABLE "testapp_userprofile" CASCADE;
DROP TABLE "testapp_school" CASCADE;
DROP TABLE "testapp_events" CASCADE;
DROP TABLE "testapp_uploadmodel" CASCADE;
COMMIT;

您可以多次執行生成的DROP TABLE腳本,直到所有表都將被刪除。 這對您有問題嗎?

已編輯

您可以使用以下命令覆蓋django.core.management.sql中的 sql_delete

...
if cursor and table_name_converter(model._meta.db_table) in table_names: 
    # Drop the table now 
    output.append('%s %s %s;' % (style.SQL_KEYWORD('DROP TABLE IF EXISTS'), #<-!
                                 style.SQL_TABLE(qn(model._meta.db_table)),
                                 style.SQL_KEYWORD('CASCADE')))    #<-!
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM