[英]if-else statement in python with django
我對django / python很陌生。 我正在嘗試創建一個字段,該字段根據另一個字段的值輸出一個值。 我已經遍及整個互聯網,但找不到任何可以幫助我的東西。
我有一個python條件:
def _final(obj):
if obj.final > '40,000':
return obj.match_score == 1
elif obj.final >= '35,000' and obj.final <= '40,000':
return obj.match_score == 2
elif obj.final >= '30,000' and obj.final <= '35,000':
return obj.match_score == 3
else:
return None
這就是我在Django模型中定義2個字段的方式:
match_score = Derived(NumberField(null=True, default=None), _final)
final = NumberField(blank=True, null=True, default=None)
它可以運行,但是當我輸入“ final”的數字時,“ match_score”中沒有任何輸出
謝謝你的幫助。
編輯代碼和縮進的格式
您需要設置值,而不是返回布爾值
def _final(obj):
if obj.final > '40,000':
obj.match_score = 1
elif obj.final >= '35,000' and obj.final <= '40,000':
obj.match_score = 2
elif obj.final >= '30,000' and obj.final <= '35,000':
obj.match_score = 3
另外,對您來說,您將其與字符串('40,000')而不是數字進行比較(40000-不加引號,不帶逗號),對我來說似乎很可疑
計算出match_score
是否會更適合作為模型上的方法而不是字段?
from django.db import models
class MyModel(models.Model):
final = models.IntegerField(blank=True, null=True)
def match_score(self):
if self.final > 40000:
return 1
elif self.final >= 35000 and self.final <= 40000:
return 2
elif self.final >= 30000 and self.final <= 35000:
return 3
{{ obj.match_score }}
這就是我解決問題的方法:
def _final(obj):
if obj.final > 40000:
return 1
elif obj.final >= 35000 and obj.final <= 40000:
return 2
elif obj.final >= 30000 and obj.final <= 35000:
return 3
else:
return 0
這兩個字段的定義方式相同。 感謝您的貢獻!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.