我不确定是谷歌搜索错了,还是我看不到自己的错误
我将Django3.x与postgreSQL数据库一起使用,数据库的模式为django2
我在Django中有一个模型,其中包含一个用于保存IPv4地址的字符域。是的,我知道GenericPaddressField,可能会切换到该字段
class APN(models.Model):
address = models.CharField(max_length=64)
username= models.CharField(max_length=64, unique=True, primary_key=True)
password = models.CharField(max_length=64)
ip = models.CharField(max_length=64)
responsible_user= models.CharField(max_length=64, null=True)
assigned = models.BooleanField(default=False)
现在我想使用results_apn = APN.objects.filter(ip__contains=query)
进行筛选,其中query
是一个字符串
对ip__contains=query
上的查询集进行过滤会导致两个观察结果:
我得到了Django生成的查询(QuerySet.query):
SELECT "sim_apn"."address", "sim_apn"."username", "sim_apn"."password", "sim_apn"."ip", "sim_apn"."responsible_user", "sim_apn"."assigned" FROM "sim_apn" WHERE "sim_apn"."ip"::text LIKE %10.171.16.14%
如果我直接在SQL中使用这个,那么我会得到一个结果。但Django不想给我一个答案
我是否遗漏了什么,或者Django在过滤查询中是否存在点问题
提前谢谢
有几个明显的问题,我必须问,你确定你要寻找的对象;真的存在吗
正如您所说,
GenericIPAddressField
是存储IP的最佳选择我不认为
icontains
会有什么不同,但是试试看如果您需要紧急修补程序,一种黑客(不推荐)的方法是通过拆分IP,过滤包含第一个数字的所有结果,然后缩小范围并过滤第二个数字
例如:IP 127.67.1.1
ip_分割=['127'、'67'、'1'、'1']
获取包含ip_split[0]的所有结果的查询列表,如果它们不包含其余的ip分数,则将其过滤
哈奇,但在你想出一个类似Python的方法来修复它之前,它是有效的
相关问题 更多 >
编程相关推荐