遍历 Queryset 不会附加到列表

时间:2021-01-12 00:34:34

标签: list loops django-queryset

我的视图中有以下代码,当它运行时,它不会从查询集中返回记录。

def pie_chart(request):
    labels = []
    data = []

    queryset = BBSO_Records.objects.all()
    for sos in queryset:
        labels.append(sos.observer_department_ID)
        data.append(sos.site_location_ID)
        print(sos.observer_department_ID)
    
    print("___________________")
    print(labels)

    return render(request, 'sos/charts/overall_records_chart.html', {
        'labels': labels,
        'data': data,
    })

当我运行代码时,以下行“print(sos.observer_department_ID)”产生这是正确的控制台:

  • 维护
  • 维护
  • 供应链管理
  • 维护
  • 维护

但是,当我打印列表“print(labels)”时,会出现以下内容: []

什么时候应该生产的是: [维护,维护,单片机,维护,维护>,维护]

有人可以就为什么会发生这种情况提供一些指导吗?

更新以包含模型:

class BBSO_Records(models.Model):

    COMPANY_OR_CONTRACTOR = (
        ('company', 'Company'),
        ('contractor', 'Contractor'),
       )

    severityLevel = (
        ('1', 'Level 1'),
        ('2', 'Level 2'),
        ('3', 'Level 3'),
       )
    
    severity_level = models.CharField(max_length=6, default= 3 , choices=severityLevel)
    date_recorded  = models.DateTimeField()
    observer_name_ID = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, verbose_name="Observer Name")  # i need to double check how I would be handling this. 
    observer_department_ID =  models.ForeignKey(Observer_Department, on_delete=models.CASCADE, verbose_name="Observer Department")
    site_location_ID = models.ForeignKey(Site_Locations, on_delete=models.CASCADE, verbose_name='Location of Observation')
    location_details = models.CharField(max_length=50, help_text='e.g. In the kitchen on the 4th floor.', blank=True)
    company_or_contractor = models.CharField(max_length=10, choices=COMPANY_OR_CONTRACTOR)
   
    number_of_persons_observed = models.IntegerField(default=1, validators=[MinValueValidator(0),
                                       MaxValueValidator(25)],verbose_name='# of Persons Observed')  #  https://stackoverflow.com/questions/849142/how-to-limit-the-maximum-value-of-a-numeric-field-in-a-django-model
    # time_spent = models.IntegerField(verbose_name="Time Spent Observing (mins)", default=True)
    PTW = models.CharField(max_length=10, verbose_name="Permit To Work Number", blank=True)
    JSA = models.CharField(max_length=10,verbose_name="Job Safety Analysis Number", blank=True)
    bbso_title = models.CharField(max_length=100,verbose_name="Title of Observation", help_text='e.g. Contractor Employee not wearing correct PPE for the job (i.e. wrong gloves).')
    details_of_observation  = models.TextField()
    date_created = models.DateTimeField(auto_now_add=True, editable=True)  # setting editable equal=False wouldnot make this contorl show on the form
    date_updated = models.DateTimeField(auto_now=True, editable=True)
    
    def __str__(self) :
        return f'{self.id} - {self.bbso_title}'

    def get_absolute_url(self):
        return reverse ('bbso_records_detail', args=[str(self.id)])
 
    class Meta:
        ordering = ["-date_created"]
        verbose_name_plural = "BBSO_Records" 
class Site_Locations(models.Model):
    location_name = models.CharField(max_length=50,unique=True, verbose_name="Location Name")

    def __str__(self):
        return self.location_name

    def get_absolute_url(self):
        return reverse("sitelocations_detail", args=[str(self.id)])

    class Meta:
        ordering = ["location_name"]
        verbose_name_plural = "Site_Locations"
class Observer_Department(models.Model):
    department_name = models.CharField(max_length=30, unique=True)

    def __str__(self):
        return self.department_name

    def get_absolute_url(self):
        return reverse("observerdepartment_detail", args=[str(self.id)])

    class Meta:
        ordering = ["department_name"]
        verbose_name_plural = "Observer_Department"

0 个答案:

没有答案