You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django:筛选含指定PK的行后,如何获取该PK对应的行数据

解决方案

首先,先优化你原有的查询逻辑——用icontains加;可能会出现误匹配(比如PK为11时,会错误匹配到包含1;的字段值),改用正则匹配能更精准地定位包含目标PK的行:

result_query_1 = models_contacts.objects.filter(company_members_id__regex=r'(^|;){}(;|$)'.format(pk))

至于获取result_query_2,完全不需要循环,直接根据目标PK查询对应行即可。如果需要先确认result_query_1有匹配结果再执行查询,可以这么写:

if result_query_1.exists():
    try:
        result_query_2 = models_contacts.objects.get(id=pk)
    except models_contacts.DoesNotExist:
        # 这里可以根据业务需求处理PK对应行不存在的情况
        result_query_2 = None
else:
    result_query_2 = None

如果你的业务逻辑不需要依赖result_query_1的结果,只要目标PK对应的行存在就获取,直接跳过exists()判断,执行get()或filter()即可。

额外提一句:把关联ID用分号拼接存储在单个字段里属于反范式设计,长期来看建议改用Django的多对多关联表,ORM对多对多关系的支持会让后续的查询、维护都更便捷。

内容的提问来源于stack exchange,提问作者Nico44044

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:53:43