Python Django功能无法正常运行
在我的订单模型中,我有两个字段Diagnosis_note和Internal_memo,如果其中一个字段为空,我希望显示一个红色按钮,如果两个字段都为空,则显示一个绿色按钮。但是,当前在“我的功能”中,如果“诊断注释”或两个字段均为空,则会显示一个绿色按钮,如果“内部备注”字段为空,则会显示一个红色按钮。如果其中一个按钮为空或不为空,则应显示红色按钮;如果两个按钮均为空,则应显示绿色按钮。我的is_complete函数有问题,但我不知道是什么Python Django功能无法正常运行,python,django,Python,Django,在我的订单模型中,我有两个字段Diagnosis_note和Internal_memo,如果其中一个字段为空,我希望显示一个红色按钮,如果两个字段都为空,则显示一个绿色按钮。但是,当前在“我的功能”中,如果“诊断注释”或两个字段均为空,则会显示一个绿色按钮,如果“内部备注”字段为空,则会显示一个红色按钮。如果其中一个按钮为空或不为空,则应显示红色按钮;如果两个按钮均为空,则应显示绿色按钮。我的is_complete函数有问题,但我不知道是什么 class Order(models.Model)
class Order(models.Model):
Diagnosis_note = models.CharField(max_length=30, blank=True)
Internal_memo = models.CharField(max_length=100, blank=True)
def is_complete(self):
fields_list = [self.Diagnosis_note, self.Internal_memo]
if self.Diagnosis_note or self.Internal_memo is None:
return True
else:
return False
html
{%if Order.is_complete%}
{%else%}
{%endif%}
您需要在模型中重写if-else语句。只有当两者都为空时,您才需要绿色,对吗?如果其中一个不是空的或两个都不是空的,则为红色。从html中,两者都为空,然后返回False,否则返回True。这将替换整个if-else语句
return self.Diagnosis_note or self.Internal_memo
首先,您不是在处理对象,而是在调用一个类。您必须首先获取正在查找的实例,例如:
order = Order.objects.get(id=order_id)
然后将订单传递给模板并进行检查
其次,当谈到方法中的if条件is_complete()时,它必须是这样的
if not self.Diagnosis_note and not self.Internal_memo: return False
else: return True
两个属性都必须有条件,并且不要使用None,因为如果值为“”not运算符在此情况下同时处理None和“”。您可以比较
self.Internal\u memo为None
,但它可以是空字符串(不是None)
试着换线
如果self.Diagnosis\u note或self.Internal\u memo为None:
到
如果self.Diagnosis\u note==无或self.Internal\u memo==无:
w=无和q=1的测试:
[1]if q or w is None: print("Y")
>>> Y
[2] if w or q is None: print("Y")
>>>
[3] if w == None or q == None: print("Y")
>>> Y
我认为在你的情况下对优先权有误解<代码>自我诊断注释或自我内部注释为无表示“诊断注释为真或内部注释为无”,而不是“诊断注释和内部注释中的一个为无”。我将“如果自我诊断注释或自我内部注释为无:”替换为“如果不是自我诊断注释或非自我内部注释:”,但是现在如果两个字段都不是空的,它会返回绿色,如果两个字段都是空的,或者其中一个是空的,它会返回红色。我的错,它应该是。。。如果不是自我诊断备注和非自我内部备注:返回False。编辑答案我必须用这个来替换return true吗?用这个替换整个if-else语句,假设你想要我的答案中列出的条件。问题是它做的正好相反。如果两个字段均不为空,则返回绿色;如果两个字段均为空或其中一个为空,则返回红色。抱歉,我已修复了答案。如果两个字段均不为空,则我希望函数返回红色;如果两个字段均为空,则返回绿色。
def is_complete(self):
return self.Diagnosis_note and self.Internal_memo # returns True if both fields are not False and not empty. otherwise, it returns False
[1]if q or w is None: print("Y")
>>> Y
[2] if w or q is None: print("Y")
>>>
[3] if w == None or q == None: print("Y")
>>> Y