Объект django 'dict' не имеет атрибута 'job_id'
У меня есть такой код:
def create_full_data_spb(contains_name: str, language="cs", system=False) -> tuple:
full_data = []
labels = []
data_pass = []
data_fail = []
data_skip = []
data_duration = []
data_estimated_duration = []
if not system:
queryset = BuildRunMultiJob.objects.select_related("job_id") \
.filter(job_id__full_display_name__contains=contains_name) \
.filter(language=language) \
.values('job_id', 'job_id__pass_count', 'job_id__fail_count', 'job_id__skip_count') \
.order_by('-job_id__timestamp')[:10]
for i in queryset:
labels.append(str(i.job_id))
data_pass.append(i.pass_count)
data_fail.append(i.fail_count)
data_skip.append(i.skip_count)
# stop using mili
mili = int(i.estimated_duration)
temp = datetime.datetime.fromtimestamp(mili / 1000).strftime('%H:%M:%S')
data_estimated_duration.append(temp)
mili = int(i.duration)
temp = datetime.datetime.fromtimestamp(mili / 1000).strftime('%H:%M:%S')
data_duration.append(temp)
full_data.append([i.job_id, i.pass_count, i.skip_count, i.fail_count, temp])
return labels, data_pass, data_fail, data_skip, data_duration, data_estimated_duration, full_data
Хотя value() определена, я получаю ошибку 'dict' object has no attribute 'job_id' Я предполагаю, что ошибка будет также для pass_count, skip_count и fail_count
Что мне здесь делать?
queryset = BuildRunMultiJob.objects.select_related("job_id") \
.filter(job_id__full_display_name__contains=contains_name) \
.filter(language=language) \
.values('job_id', 'job_id__pass_count', 'job_id__fail_count', 'job_id__skip_count') \
.order_by('-job_id__timestamp')
Ваш запрос не возвращает кверисет с экземплярами объектов, поэтому вы не можете ссылаться на поля с помощью ".". Это вызвано https://docs.djangoproject.com/en/4.0/ref/models/querysets/#values
Вы можете либо отредактировать свой код, либо удалить значения, только тогда вы получите и собственные поля объекта.