Django-检查值是否为None

时间:2018-09-18 07:45:02

标签: python django django-models

我正在使用Django开发服务器,但遇到了一个不确定的问题。

我有以下模型:

class Group(models.Model):

    group_name = models.CharField(max_length=45, unique=True)
    attached_rule = models.CharField(max_length=45, null=True)

    @classmethod
    def create(cls, group_name, attached_rule=None):
        group = cls(group_name=group_name, attached_rule=attached_rule)
        return group

    def __str__(self):
        return self.group_name

views.py中还具有以下功能:

def get_rule_by_group(request):
    if request.method == 'GET':
        group_name = request.GET.get("groupName")
        print(group_name)
        group = Group.objects.filter(group_name=group_name)

        if group.attached_rule is None: #<== Fails here
            print("attached rule is null")

        return HttpResponse("Successful")

现在,当组首次创建时, attached_rule 的值为空,以后将更改。创建组后,会出现问题,然后尝试将附加规则打印到控制台-我检查规则是否为空。但是,服务器此时出现故障,并且出现此错误:

  

“ GET / policies / getRuleByGroup /?groupName = TestGroup HTTP / 1.1” 500 58646

什么可能导致此错误? 预先感谢。

编辑: 问题是我使用的是Group.objects.filter()而不是Group.objects.get()

1 个答案:

答案 0 :(得分:3)

在您的代码中,group是一个查询集,而不是模型实例。因此它没有attached_rule属性。更改:

group = Group.objects.filter(group_name=group_name)

group = Group.objects.get(group_name=group_name)

如果可能没有这样的组(或多个),则可能需要做一些额外的检查或异常处理。