Почему моя пользовательская команда 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)
Помощь будет очень признательна