from django.db import models class Category(models.Model): name = models.CharField(max_length=100) order = models.PositiveIntegerField(default=0) class Meta: ordering = ["order", "name"] verbose_name_plural = "categories" def __str__(self): return self.name class Subcategory(models.Model): name = models.CharField(max_length=100) category = models.ForeignKey( Category, on_delete=models.CASCADE, related_name="subcategories" ) order = models.PositiveIntegerField(default=0) class Meta: ordering = ["order", "name"] verbose_name_plural = "subcategories" def __str__(self): return self.name class FixedExpenseConcept(models.Model): name = models.CharField(max_length=255) order = models.PositiveIntegerField(default=0) class Meta: ordering = ["order", "name"] def __str__(self): return self.name class Expense(models.Model): concept = models.CharField(max_length=255) amount = models.DecimalField(max_digits=10, decimal_places=2) category = models.ForeignKey( Category, on_delete=models.PROTECT, related_name="expenses" ) subcategory = models.ForeignKey( Subcategory, on_delete=models.PROTECT, related_name="expenses" ) created_at = models.DateTimeField(auto_now_add=True) class Meta: ordering = ["-created_at"] def __str__(self): return f"{self.concept} - {self.amount}€"