擅长:python、mysql、java
<p>根据您的需要,我认为您可以这样做:</p>
<pre><code>get_req = request.GET.get('drugid', '')
# Fetching all the epc_ids that belongs to requisted drug_bank_ids
comp_class = DrugBankDrugEPClass.objects.filter(drug_bank_id = get_req).values_list('epc_id', flat=True).distinct()
# filters all drug_bank_ids thats matcth with the epc_ids in requisted
classtocomp = DrugBankDrugEPClass.objects.filter(epc_id__in = comp_class).values_list('drug_bank_id', flat=True).distinct()
</code></pre>
<p>升级版:</strong></p>
<pre><code>get_req = request.GET.get('drugid', '')
comp_class = DrugBankDrugEPClass.objects.filter(
drug_bank_id=get_req).values_list('epc_id', flat=True).distinct()
class_to_comp = DrugBankDrugEPClass.objects.filter(
epc_id__in=comp_class).values_list('drug_bank_id', 'epc_id')
d = {}
for k, v in class_to_comp:
d.setdefault(k, []).append(v)
simi_list = [k for k, v in d.items() if v == list(comp_class)]
print(simi_list)
</code></pre>
<p>我认为它会比你的代码快一点,因为如果我也循环
就像你做的那样,它不会在每个循环中命中数据库。它还可以循环过滤数据。你知道吗</p>