我有这样的东西在我的视图.py在
def calculateMark(mobile_a, mobile_b):
#variables
mobile_a = mobile_a
mobile_b = mobile_b
results_a = []
results_b = []
record_a = TechSpecificationAdd.objects.filter(mobile_name=mobile_a).values()
record_b = TechSpecificationAdd.objects.filter(mobile_name=mobile_b).values()
results_a += record_a
results_b += record_b
record_a = record_a[0]
record_b = record_b[0]
if 'Android' in record_a['os']:
os_mark_a = 8.9
elif 'Android' in record_b['os']:
os_mark_b = 8.9
elif 'iOS' in record_a['os']:
os_mark_a = 14
if 'iOS' in record_b['os']:
os_mark_b = 14
else:
os_mark_a = 1
os_mark_b = 1
calculateMark函数将为手机计算一个标记。一切正常,但在操作系统(os)测试的情况下。它总是返回else块。在
问题是如何在我的record['os']字段中搜索类似“ios”的字符串?在
如果我错了,请纠正我,但我相信您的问题是
if
在以下行中:在这种情况下,{cd2}和1覆盖。要更正此特定问题,请将行更改为:
^{pr2}$我还发现了一些奇怪的事情:
在大多数情况下,只需设置
os_mark_b
或os_mark_a
中的一个,离开 另一个不稳定。例如,您可以通过设置来更正此问题 两者都要先设置为默认值。不需要使用
values()
将值加载到字典中,只需使用.get()
并直接使用结果对象。除其他好处外,这将完全消除第6、7、10、11、12、13行。A和B的计算似乎完全分开了。创建一个calucaltes为单个对象标记的更小的方法似乎更明智。
您的方法不返回任何内容。我想这只是因为这是一个简化的例子。
下面的代码是关于什么的?那没用。。。在
更新:没有这些问题的代码示例:
更新2:另外,由于我们已经在改进代码方面取得了进展-这不应该是一个单独的函数,而是
TechSpecificationAdd
对象上的一个方法。在然后在代码中使用如下:
相关问题 更多 >
编程相关推荐