Django slick report и вложенные категории

Я использую в django следующий models.py:

class Expense(models.Model):
    name = models.CharField(max_length=50)
    date = models.DateField(unique=False, blank=False)
    slug = models.SlugField(unique=True, null=True, default='')
    # slug = AutoSlugField(null=True, default=None, unique=True, populate_from='name')
    price = models.DecimalField(default=0.0, blank=True, max_digits = 20, decimal_places = 2)
    category    = models.ForeignKey(
        'Category',
        related_name="Expense",
        on_delete=models.CASCADE
    )
    account = models.ForeignKey(Account, on_delete=models.CASCADE, verbose_name=u"Account", help_text=u"account")

def __str__(self):
    return '{},{},{}'.format(self.name, self.date, self.price)

def save(self, *args, **kwargs):
    self.slug = slugify(self.name)
    super(Expense,self).save(*args, **kwargs)

def get_absolute_url(self):
    return self.slug

class Category(MPTTModel):
    name = models.CharField(max_length=200)
    slug = models.SlugField(unique=True, null=True, default='')
    # slug = AutoSlugField(null=True, default=None, unique=True, populate_from='name')
    parent = TreeForeignKey(
        'self',
        blank=True,
        null=True,
        related_name='child',
        on_delete=models.CASCADE
    )
class Meta:
    unique_together = ('slug', 'parent',)
    verbose_name_plural = "categories"

def __str__(self):
    full_path = [self.name]
    k = self.parent
    while k is not None:
        full_path.append(k.name)
        k = k.parent

    return ' -> '.join(full_path[::-1])

Дерево TreeForeignKey позволяет мне определять вложенные категории, такие как Home -> Electricity и так далее. Я использую следующий файл Slick Report view.py:

class TotalExpenses(SlickReportView):

report_model = Expense
date_field = 'date'
group_by = 'category'
columns = ['name', SlickReportField.create(method=Sum, field='price', name='price__sum', verbose_name=('Total category $'))]

charts_settings = [
 {
    'type': 'bar',
    'data_source': 'price__sum',
    'title_source': 'name',
 },
]

Это работает, но я хотел бы суммировать только категории первого уровня. Не знаете ли вы, как это можно сделать?

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