在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
相关产品推荐
相关产品推荐

