Почему моя пользовательская команда django-admin не выполняется на Heroku?

Я создал пользовательскую команду django-admin, которая находит среднюю цену для товара с ценами от различных розничных продавцов. Средняя цена сохраняется как объект в моей модели PriceHistory для формирования точек данных для диаграмм истории товара.

Моя команда python manage.py average работает на моем компьютере и также работает в Heroku CLI, однако Heroku Scheduler не выполняет команду и данные не сохраняются, хотя Heroku Scheduler отлично работает с другими моими пользовательскими командами.

Полезные документы: https://devcenter.heroku.com/articles/scheduling-custom-django-management-commands

average.py

class Command(BaseCommand):
    def handle(self,*args,**options):
        try:
            products = Product.objects.all()
            for i in range(len(products)):
                total = 0
                count = 0
                self.stdout.write(self.style.SUCCESS(products[i]._id))
                array = RetailerProduct.objects.filter(product=products[i])
                for item in array:
                    #print(item.price)
                    if item.price != 0.00:
                        total += item.price
                        count += 1
                try:
                    mean = total/count
                except ZeroDivisionError:
                    mean=0.00
                self.stdout.write(self.style.SUCCESS(products[i].name+" : £"+str(mean)))
                save_mean = PriceHistory(price=round(float(mean),2),product=products[i])
                save_mean.save()    
        except:
            self.stdout.write(self.style.ERROR(error))
            return
        
        self.stdout.write(self.style.SUCCESS('Successfully calculated all averages'))
        return

Модель продукта:

class Product(models.Model):
    name = models.CharField(max_length=30,null=True,blank=True)
    brand = models.CharField(max_length=20,null=True,blank=True)
    image = models.ImageField(null=True,blank=True)
    _id = models.AutoField(primary_key=True, editable=False)

Модель продукта розничной торговли:

class RetailerProduct(models.Model):
    url = models.CharField(max_length=300,null=True,blank=True) 
    price =  models.DecimalField(default=0.00,max_digits=8,decimal_places=2,null=True,blank=True)
    difference = models.DecimalField(default=0.00,max_digits=8,decimal_places=2,null=True,blank=True)
    retailer = models.ForeignKey(Retailer, on_delete=models.CASCADE)
    available = models.BooleanField(default=False)
    _id = models.AutoField(primary_key=True, editable=False)
    product = models.ForeignKey(Product, on_delete=models.CASCADE,related_name='sources')

Модель истории цен:

class PriceHistory(models.Model):
    price = models.DecimalField(default=0.00,max_digits=8,decimal_places=2)
    product = models.ForeignKey(Product,on_delete=models.CASCADE,related_name='history')
    date = models.DateField(default=date.today,blank=True)
    _id = models.AutoField(primary_key=True,editable=False)

Помощь будет очень признательна

Вернуться на верх