Issue
I've got this code:
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
Even though value() is defined, I get the error 'dict' object has no attribute 'job_id'
I guess the error will also be for pass_count, skip_count and fail_count
What am I supposed to do here?
Solution
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')
Your query does not return a queryset with object instances, so you cannot refer to fields with a "." It is caused by https://docs.djangoproject.com/en/4.0/ref/models/querysets/#values
You can either edit your code or remove values, only then will you get the object's own fields too.
Answered By - kjaw
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.