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

在Django中获取包含特定键的所有对象——附DeployedContracts模型

在Django中获取DeployedContracts模型包含特定键的对象

嘿,我来帮你搞定这个问题!首先得明确你说的“特定键”具体指什么——是某个字段匹配特定值,还是类似JSON字段里包含某个键?我分两种常见情况给你说明:

情况1:筛选某个字段匹配特定值的对象

你的DeployedContracts模型里都是常规的字符/整数字段,比如house_no、rent这些。如果要获取某个字段等于(或满足某种条件)特定值的所有对象,直接用Django的filter()方法就行。

举几个实用例子:

  • 获取所有house_no为"101"的合同:
    from your_app_name.models import DeployedContracts
    
    target_contracts = DeployedContracts.objects.filter(house_no="101")
    
  • 获取所有rent大于3000的合同:
    target_contracts = DeployedContracts.objects.filter(rent__gt=3000)
    
  • 获取house_tenant名字包含“张三”的合同(字符字段模糊匹配):
    target_contracts = DeployedContracts.objects.filter(house_tenant__contains="张三")
    

Django支持很多灵活的字段查找规则,比如__exact(精确匹配)、__gte(大于等于)、__startswith(以某字符串开头)等,你可以根据实际需求调整。

情况2:筛选JSON字段中包含特定键的对象

如果你的deployed_contract_address字段是JSON类型(比如打算改成models.JSONField()),想要找包含某个特定键的对象,分两种推荐方式:

  • 对于Django 3.1及以上版本,用__contains更通用:
    # 假设字段是contract_data = models.JSONField()
    target_contracts = DeployedContracts.objects.filter(contract_data__contains={"target_key": None})
    
  • 如果用的是PostgreSQL数据库,用__keys会更直观:
    target_contracts = DeployedContracts.objects.filter(contract_data__keys__contains=["target_key"])
    

如果你的“特定键”是其他场景,可以补充细节,但上面两种应该覆盖了大部分常用情况啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:02:51