Не виден аттрибут выборки.Django

Мне в проекте нужно записать в БД среднюю оценку, которая меняется при добавлении комментария. Я записал в переменную arg1 среднюю оценку из комментариев к конкретному сайту. Она выдала {'mark__avg':3.0}. Попытался записать это значение в поле rate модели Parse, но Django выдал ошибку 'dict' object has no attribute 'mark__avg'. Не могу понять в чем проблема.

def leave_comment(request, parse_id):
    try:
        b = Parse.objects.get(id = parse_id)
    except:
        raise Http404("Сайт не найден") 
    usr = User.objects.get(username = request.user)
    if request.user.groups.filter(name = "Moderators").exists():
        typ = Type_Com.objects.get(id=2)
    else: 
        typ = Type_Com.objects.get(id=1)
    if request.method == "POST": 
        markl = request.POST.get('mark')
    b.comment_set.create(text = request.POST['uText'], type=typ, mark = markl, date_com = timezone.now())
 
    
    coms = Comment.objects.filter(id_parse = parse_id)
    arg1 = Comment.objects.filter(id_parse=parse_id).aggregate(Avg('mark'))
    b.rate = arg1.mark__avg|floatformat
    b.save()
 
    return HttpResponseRedirect ( reverse('ParseApp:parse', args=(b.id)) )

1

2


Ответы (1 шт):

Автор решения: GrAnd

Обращение к элементу словаря делается так

arg1['mark__avg']

или так, если нужно значение по умолчанию в случае отсутствие запрашиваемого элемента:

arg1.get('mark__avg', 0)

Кстати, ещё возникнет ошибка на битовой операции |floatformat. Ведь, судя по всему arg1['mark__avg'] у вас типа float, а не int.

→ Ссылка