所以,我收到的错误是:
TypeError: 'in <string>' requires string as left operand, not QuerySet
我有一个方法:
error_val = self.error_object
for p in self.output:
request = requests.get(p, timeout=settings.REQUESTS_TIMEOUT, verify=False)
for req in request:
if error_val in req:
print 'error Found in'+req
由于error_val
if()
而导致此错误
在非专业人士的说法中,这基本上是在说(如果我没有记错的话),"Whoah, I'm getting a object value, with strings, but I can't compare to another object value"
req
- 基本上是页面的html输出,例如<html><body><!--html content here--></body></html>
error_val
- 是一个包含对象值的变量(来自django查询的结果)
我的问题:我如何重做此方法,我可以针对每个error_val
使用req
var(请求)?
任何帮助,评论和建议都非常有用。谢谢。
答案 0 :(得分:1)
self.error_object
包含QuerySet
类的实例。并且否您无法检查此类型的对象是否在字符串内。
QuerySet
是一个类,它是Django ORM查询的包装器。它实现了iterable
协议,因此您可以迭代它以逐个获取匹配的Model
实例
然后,您可以将这些实例的字段作为普通对象属性进行访问。如果其中一个是字符串,那么您可以检查它是否是req
的子字符串
很难说,你究竟想要做什么只是猜测:
for model_instance in self.error_object:
for req in request:
if model_instance.some_string_field in req:
print 'error Found in' + req
答案 1 :(得分:0)
如果您正在尝试检查是否有任何多个对象&#39;字符串表示出现在您的响应中(我无法弄清楚其他行为&#34;字符串&#34;中的查询集可能打算创建)您想要的内容如下:
error_strings = [str(val) for val in self.error_object]
...
# then in your loop
if any(val in req for val in error_strings):
您可能还会分析创建or
d一起使用错误字符串的正则表达式。