Не виден аттрибут выборки.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 шт):
Автор решения: GrAnd
→ Ссылка
Обращение к элементу словаря делается так
arg1['mark__avg']
или так, если нужно значение по умолчанию в случае отсутствие запрашиваемого элемента:
arg1.get('mark__avg', 0)
Кстати, ещё возникнет ошибка на битовой операции |floatformat. Ведь, судя по всему arg1['mark__avg'] у вас типа float, а не int.

