我正在使用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()
答案 0 :(得分:3)
在您的代码中,group
是一个查询集,而不是模型实例。因此它没有attached_rule
属性。更改:
group = Group.objects.filter(group_name=group_name)
到
group = Group.objects.get(group_name=group_name)
如果可能没有这样的组(或多个),则可能需要做一些额外的检查或异常处理。