Django - ошибка 500 возникает при проверке значения None - PullRequest
0 голосов
/ 18 сентября 2018

Я использую 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")

Теперь, когда группа впервые создала, значение attach_rule равно нулю и будет изменено позже.Проблема возникает после того, как я создаю группу, а затем пытаюсь распечатать прикрепленное правило на консоли - я проверяю, является ли правило пустым.Однако на этом этапе происходит сбой сервера, и я получаю эту ошибку:

"GET /icies / getRuleByGroup /? GroupName = TestGroup HTTP / 1.1" 500 58646

Чтоможет быть причиной этой ошибки?Заранее спасибо.

РЕДАКТИРОВАТЬ: Проблема заключалась в том, что я использовал Group.objects.filter () вместо Group.objects.get ()

1 Ответ

0 голосов
/ 18 сентября 2018

В вашем коде group - это набор запросов, а не экземпляр модели. Так что у него нет атрибута attached_rule. Изменения:

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

до

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

Возможно, вам придется выполнить дополнительную проверку или обработку исключений, если возможно, что такой группы нет (или их несколько).

...