【发布时间】:2017-11-30 06:45:44
【问题描述】:
我正在寻找删除 4 个数据库中存在的一些相同行。
每个数据库都有一个名为Identity_Individu 的表。不用担心这个过程,这是在数据库之间共享数据的唯一方法,因为 Django 不允许使用数据交叉关系。
我有这部分:
#settings.py file
BDD = ('default', 'DS_Douane', 'DS_Impots', 'DS_Finance')
#views.py file
@login_required
def Identity_Deleting(request) :
query_number = request.GET.get('q6')
if query_number :
query_number_list = Individu.objects.filter(NumeroIdentification__iexact=query_number)
else :
query_number_list = Individu.objects.none()
form = IndividuFormulaire(request.POST or None, instance = query_number_list.first())
if "Delete" in request.POST :
for element in settings.BDD :
form = Individu.objects.filter(pk=query_number_list).delete().using(element)
return HttpResponseRedirect(reverse('Home'))
我遇到了一个问题:
(1093, "表'Identity_individu'被指定了两次,都作为目标 用于“删除”并作为单独的数据源”)
我必须如何使用 .delete() 和 using() 才能删除每个表中符合条件的所有行?
我试过.delete(using=element),但我得到了:
delete() 得到了一个意外的关键字参数 'using'
【问题讨论】:
-
我不确定,但首先使用 using 有什么不同吗? Individu.objects.using(element).filter(pk=query_number_list).delete()
-
@Thom 不,我仍然遇到同样的问题:
(1093, "Table 'Identity_individu' is specified twice, both as a target for 'DELETE' and as a separate source for data"):/ 所有 django 文档都说:.delete(using=...)但它似乎不起作用 -
我在我这边试过了,它可以工作(无论 .using() 放在哪里),似乎对 mysql 有限制。也许尝试使用 Django 调试工具栏查看执行了什么 SQL 查询。
-
我有不同的数据库^^你有没有同时尝试不同的数据库?
-
是的,我尝试使用 2 个 SQLite DB :)
标签: django