我正在寻找删除 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, "Table 'Identity_individu' is specified twice, both as a target for 'DELETE' and as a separate source for data")
我如何将 .delete()
与 using()
一起使用,以便删除每个表中符合条件的所有行?
我尝试了 .delete(using=element)
但我得到了:
delete() got an unexpected keyword argument 'using'
最佳答案
这是我们 talked 之后的解决方案:)
@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()
instance = query_number_list.first()
form = IndividuFormulaire(request.POST or None, instance = query_number_list.first())
if "Delete" in request.POST :
ids_to_delete = list(query_number_list.values_list('id', flat=True))
for element in settings.BDD :
form = Individu.objects.using(element).filter(pk__in=ids_to_delete).delete()
return HttpResponseRedirect(reverse('Home'))
有两件重要的事情:
- 第一个查询集
query_number_list
的结果应该保存在一个list
中,以备后用 .using()
应该在.delete()
之前使用
关于django - 删除许多 MySQL 表中的相同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44776458/