Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django功能无法正常运行_Python_Django - Fatal编程技术网

Python Django功能无法正常运行

Python Django功能无法正常运行,python,django,Python,Django,在我的订单模型中,我有两个字段Diagnosis_note和Internal_memo,如果其中一个字段为空,我希望显示一个红色按钮,如果两个字段都为空,则显示一个绿色按钮。但是,当前在“我的功能”中,如果“诊断注释”或两个字段均为空,则会显示一个绿色按钮,如果“内部备注”字段为空,则会显示一个红色按钮。如果其中一个按钮为空或不为空,则应显示红色按钮;如果两个按钮均为空,则应显示绿色按钮。我的is_complete函数有问题,但我不知道是什么 class Order(models.Model)

在我的订单模型中,我有两个字段Diagnosis_note和Internal_memo,如果其中一个字段为空,我希望显示一个红色按钮,如果两个字段都为空,则显示一个绿色按钮。但是,当前在“我的功能”中,如果“诊断注释”或两个字段均为空,则会显示一个绿色按钮,如果“内部备注”字段为空,则会显示一个红色按钮。如果其中一个按钮为空或不为空,则应显示红色按钮;如果两个按钮均为空,则应显示绿色按钮。我的is_complete函数有问题,但我不知道是什么


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